1
1

bringing VampirTrace integration to the trunk

This commit was SVN r17278.
Этот коммит содержится в:
Andreas Knüpfer 2008-01-28 08:39:48 +00:00
родитель fe6ba96dd6
Коммит c53e19be46
350 изменённых файлов: 167342 добавлений и 2 удалений

Просмотреть файл

@ -83,6 +83,7 @@ m4_include(config/ompi_check_vendor.m4)
m4_include(config/ompi_config_subdir.m4)
m4_include(config/ompi_config_subdir_args.m4)
m4_include(config/ompi_configure_options.m4)
m4_include(config/ompi_contrib.m4)
m4_include(config/ompi_find_type.m4)
m4_include(config/ompi_functions.m4)
m4_include(config/ompi_get_version.m4)

Просмотреть файл

@ -47,6 +47,7 @@ EXTRA_DIST = \
ompi_config_solaris_threads.m4 \
ompi_config_threads.m4 \
ompi_configure_options.m4 \
ompi_contrib.m4 \
ompi_functions.m4 \
ompi_get_version.m4 \
ompi_get_version.m4sh \

125
config/ompi_contrib.m4 Обычный файл
Просмотреть файл

@ -0,0 +1,125 @@
dnl -*- shell-script -*-
dnl
dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
dnl University Research and Technology
dnl Corporation. All rights reserved.
dnl Copyright (c) 2004-2005 The University of Tennessee and The University
dnl of Tennessee Research Foundation. All rights
dnl reserved.
dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
dnl University of Stuttgart. All rights reserved.
dnl Copyright (c) 2004-2005 The Regents of the University of California.
dnl All rights reserved.
dnl Copyright (c) 2007 Cisco, Inc. All rights reserved.
dnl $COPYRIGHT$
dnl
dnl Additional copyrights may follow
dnl
dnl $HEADER$
dnl
######################################################################
#
# OMPI_CONTRIB
#
# configure the contributed software components. Currently fairly
# hard-wired, but someday should be much more like OMPI_MCA. See
# https://svn.open-mpi.org/trac/ompi/ticket/1162.
#
# USAGE:
# OMPI_CONTRIB()
#
######################################################################
AC_DEFUN([OMPI_CONTRIB],[
dnl for OMPI_CONFIGURE_USER env variable
AC_REQUIRE([OMPI_CONFIGURE_SETUP])
# Option to not build some of the contributed software packages
AC_ARG_ENABLE([contrib-no-build],
[AC_HELP_STRING([--enable-contrib-no-build=LIST],
[Comma-separated list of contributed package NAMEs that will not be built. Example: "--enable-mca-no-build=libnbc,vt" will disable building both the "libnbc" and "vt" contributed software packages.])])
# Parse the list to see what we should not build
ompi_show_subtitle "Configuring contributed software packages"
AC_MSG_CHECKING([which contributed software packages should be disabled])
if test "$enable_contrib_no_build" = "yes"; then
AC_MSG_RESULT([yes])
AC_MSG_ERROR([*** The enable-contrib-no-build flag requires an explicit list
*** of packages to not build. For example, --enable-contrib-no-build=vt])
else
ifs_save="$IFS"
IFS="${IFS}$PATH_SEPARATOR,"
msg=
for item in $enable_contrib_no_build; do
str="`echo DISABLE_contrib_${item}=1 | sed s/-/_/g`"
eval $str
msg="$item $msg"
done
IFS="$ifs_save"
fi
AC_MSG_RESULT([$msg])
unset msg
# List of contrib subdirs to traverse into
OMPI_CONTRIB_SUBDIRS=
OMPI_CONTRIB_DIST_SUBDIRS=
# Cycle through each of the hard-coded software packages and
# configure them if not disabled. May someday be expanded to have
# autogen find the packages instead of this hard-coded list
# (https://svn.open-mpi.org/trac/ompi/ticket/1162). I couldn't
# figure out a simple/easy way to have the m4 foreach do the m4
# include *and* all the rest of the stuff, so I settled for having
# two lists: each contribted software package will need to add its
# configure.m4 list here and then add its name to the m4 define
# for contrib_software_list. Cope.
#dnl m4_include(ompi/contrib/libnbc/configure.m4)
m4_include(ompi/contrib/vt/configure.m4)
m4_define(contrib_software_list, [vt])
#dnl m4_define(contrib_software_list, [libnbc, vt])
m4_foreach(software, [contrib_software_list],
[OMPI_CONTRIB_DIST_SUBDIRS="$OMPI_CONTRIB_DIST_SUBDIRS contrib/software"
_OMPI_CONTRIB_CONFIGURE(software)])
# Setup the top-level glue
AC_SUBST(OMPI_CONTRIB_SUBDIRS)
AC_SUBST(OMPI_CONTRIB_DIST_SUBDIRS)
])dnl
######################################################################
#
# _OMPI_CONTRIB_SOFTWARE
#
# Setup a specific contributed software package. This is a subroutine
# because the work to setup each package is essentially the same.
# Currently assumes that there is a configure.m4 file in the
# contributed software directory. May someday be expanded to handle
# other things.
#
# USAGE:
# _OMPI_CONTRIB_SOFTARE([package_name])
#
######################################################################
AC_DEFUN([_OMPI_CONTRIB_CONFIGURE],[
ompi_show_subsubsubtitle "$1 (m4 configuration macro)"
OMPI_CONTRIB_HAPPY=0
if test "$DISABLE_contrib_$1" = ""; then
OMPI_contrib_$1_CONFIG([OMPI_CONTRIB_HAPPY=1], [])
AC_MSG_CHECKING([if contributed component $1 can compile])
if test "$OMPI_CONTRIB_HAPPY" = "1"; then
OMPI_CONTRIB_SUBDIRS="$OMPI_CONTRIB_SUBDIRS contrib/$1"
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
else
AC_MSG_NOTICE([disabled via command line switch])
fi
AC_DEFINE_UNQUOTED(OMPI_ENABLE_CONTRIB_$1, [$OMPI_CONTRIB_HAPPY],
[Enable contributed software package $1])
unset OMPI_CONTRIB_HAPPY
])dnl

Просмотреть файл

@ -977,6 +977,17 @@ OMPI_MCA
# checkpoint results
AC_CACHE_SAVE
##################################
# Contributed software
##################################
ompi_show_title "Contributed software setup"
OMPI_CONTRIB
# checkpoint results
AC_CACHE_SAVE
############################################################################
# Final top-level OMPI configuration

Просмотреть файл

@ -48,7 +48,8 @@ SUBDIRS = \
$(MCA_ompi_FRAMEWORKS_SUBDIRS) \
$(MCA_ompi_FRAMEWORK_COMPONENT_STATIC_SUBDIRS) \
. \
$(MCA_ompi_FRAMEWORK_COMPONENT_DSO_SUBDIRS)
$(MCA_ompi_FRAMEWORK_COMPONENT_DSO_SUBDIRS) \
$(OMPI_CONTRIB_SUBDIRS)
DIST_SUBDIRS = \
include \
@ -57,7 +58,8 @@ DIST_SUBDIRS = \
etc \
mpi \
$(MCA_ompi_FRAMEWORKS_SUBDIRS) \
$(MCA_ompi_FRAMEWORK_COMPONENT_ALL_SUBDIRS)
$(MCA_ompi_FRAMEWORK_COMPONENT_ALL_SUBDIRS) \
$(OMPI_CONTRIB_DIST_SUBDIRS)
# Build the main MPI library

26
ompi/contrib/vt/Makefile.am Обычный файл
Просмотреть файл

@ -0,0 +1,26 @@
# -*- makefile -*-
#
# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
# University Research and Technology
# Corporation. All rights reserved.
# Copyright (c) 2004-2005 The University of Tennessee and The University
# of Tennessee Research Foundation. All rights
# reserved.
# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
# University of Stuttgart. All rights reserved.
# Copyright (c) 2004-2005 The Regents of the University of California.
# All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
SUBDIRS = \
vt \
wrappers
DIST_SUBDIRS = \
vt \
wrappers

1239
ompi/contrib/vt/Makefile.in Обычный файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

61
ompi/contrib/vt/configure.m4 Обычный файл
Просмотреть файл

@ -0,0 +1,61 @@
# -*- shell-script -*-
#
# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
# University Research and Technology
# Corporation. All rights reserved.
# Copyright (c) 2004-2005 The University of Tennessee and The University
# of Tennessee Research Foundation. All rights
# reserved.
# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
# University of Stuttgart. All rights reserved.
# Copyright (c) 2004-2005 The Regents of the University of California.
# All rights reserved.
# Copyright (c) 2007 Cisco, Inc. All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
# OMPI_contrib_vt_CONFIG([action-if-can-compile],
# [action-if-cant-compile])
# ------------------------------------------------
AC_DEFUN([OMPI_contrib_vt_CONFIG],[
AC_ARG_WITH([contrib-vt-flags],
[AC_HELP_STRING([--with-contrib-vt-flags=FLAGS],
[Pass FLAGS to the VampirTrace distribution configuration script])])
AS_IF([test -n "$with_contrib_vt_flags" -a "$with_contrib_vt_flags" != "no"],
[contrib_vt_flags="$with_contrib_vt_flags $contrib_vt_flags"],
[contrib_vt_flags=])
AS_IF([test -n "$prefix" -a "$prefix" != "NONE"],
[contrib_vt_flags="$contrib_vt_flags --prefix=$prefix"])
AS_IF([test "$cross_compiling" = "yes"],
[AS_IF([test ! -z $build], [contrib_vt_flags="$contrib_vt_flags --build=$build"])
AS_IF([test ! -z $host], [contrib_vt_flags="$contrib_vt_flags --host=$host"])
AS_IF([test ! -z $target], [contrib_vt_flags="$contrib_vt_flags --target=$target"])])
contrib_vt_flags="MPICC="'"'"$CC"'"'" --with-openmpi --with-mpi-inc-dir="'"'"$top_ompi_builddir/ompi/include"'"'" --with-mpi-status-size=5 --with-mpi-io --disable-config-titles --disable-config-summary $contrib_vt_flags"
# Run VampirTrace's configure and see if it succeeded
OMPI_CONFIG_SUBDIR([ompi/contrib/vt/vt],
[$contrib_vt_flags],
[contrib_vt_happy=1], [contrib_vt_happy=0])
# If VampirTrace configured itself successfully, setup OMPI-specific
# VampirTrace glue code to build.
AS_IF([test "$contrib_vt_happy" = "1"],
[$1
AC_CONFIG_FILES([
ompi/contrib/vt/Makefile
ompi/contrib/vt/wrappers/Makefile
ompi/contrib/vt/wrappers/mpicc-vt-wrapper-data.txt
ompi/contrib/vt/wrappers/mpic++-vt-wrapper-data.txt
ompi/contrib/vt/wrappers/mpif77-vt-wrapper-data.txt
ompi/contrib/vt/wrappers/mpif90-vt-wrapper-data.txt
])],
[$2])
])dnl

12
ompi/contrib/vt/vt/AUTHORS Обычный файл
Просмотреть файл

@ -0,0 +1,12 @@
VampirTrace is developped in collaboration with the KOJAK project
at ZAM/FZ Juelich (http://www.fz-juelich.de/zam/kojak)
Staff at ZIH:
Matthias Jurenz
Andreas Knuepfer
Ronny Brendel
Matthias Lieber
Jens Doleschal
Robert Henschel
Holger Mickler
Matthias Mueller

19
ompi/contrib/vt/vt/CONFIG-EXAMPLES Обычный файл
Просмотреть файл

@ -0,0 +1,19 @@
+++ SGI Altix 4700 (TU Dresden, ZIH)
./configure CC=icc CXX=icpc F77=ifort FC=ifort --with-local-tmp-dir=/scratch --with-papi-dir=/opt/papi/3.2.1 --with-papi-lib="-lpapi /opt/papi/3.2.1/lib/libpfm.a" --with-dyninst-dir=/licsoft/tools/dyninst/5.0.1
+++ IBM Regatta p690+ (Research Centre Juelich)
./configure AR="ar -X32_64" CC=xlc_r CFLAGS="-O2 -g -q64" CXX=xlC_r CXXFLAGS="-O2 -g -q64" F77=xlf_r FFLAGS="-O2 -g -q64" FC=xlf90_r FCFLAGS="-O2 -g -q64" MPICC=mpcc_r --with-mpi-dir=/usr/lpp/ppe.poe --with-papi-dir=/usr/local/beta/papi --with-papi-lib=-lpapi64
+++ BlueGene/L (Research Centre Juelich)
./configure --with-otf-extra-opts="--with-zlib --with-zlib-dir=<zlib-dir>" --build=powerpc64-unknown-linux-gnu --host=none-ibm-linux CC=blrts_xlc CFLAGS=-O2 CXX=blrts_xlC CXXFLAGS=-O2 F77=blrts_xlf90 FC=blrts_xlf90 CXX_FOR_BUILD=xlC_r MPICC=mpixlc --with-otf-lib="-lotf -L<zlibdir> -lz" --with-mpi-dir=/bgl/BlueLight/ppcfloor/bglsys --with-mpi-lib=-lmpich.rts --with-pmpi-lib=-lmpich.rts --with-fmpi-lib=-lfmpich.rts --disable-iotrace --with-papi-dir=/usr/local/papi/papi-3.5.0 --with-papi-lib="-lpapi.rts -lbgl_perfctr.rts"
+++ BlueGene/L (University of Edinburgh)
./configure CC=blrts_xlc CFLAGS="-O2 -g" CXX=blrts_xlC CXXFLAGS="-O2 -g" F77=blrts_xlf90 FC=blrts_xlf90 CXX_FOR_BUILD=xlC_r MPICC=mpixlc --build=powerpc64-unknown-linux-gnu --host=none-ibm-linux --with-otf-lib=-lotf --with-mpi-dir=/bgl/BlueLight/ppcfloor/bglsys --with-mpi-lib=-lmpich.rts --with-pmpi-lib=-lmpich.rts --with-fmpi-lib=-lfmpich.rts
+++ NEC SX-8 (High Performance Computing Center Stuttgart)
./configure CC=sxcc CXX=sxc++ F77=sxf90 FC=sxf90 AR=sxar MPICC=sxmpicc CXX_FOR_BUILD=c++ RANLIB="sxar st" OMPFLAG=-Popenmp --build=ia64-unknown-linux-gnu --host=sx8-nec-superux15.1 --with-otf-lib=-lotf

32
ompi/contrib/vt/vt/COPYING Обычный файл
Просмотреть файл

@ -0,0 +1,32 @@
Copyright (c) 2005-2007, ZIH, TU Dresden, Federal Republic of Germany
Copyright (c) 1998-2005, Forschungszentrum Juelich GmbH, 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 or Forschungszentrum Juelich GmbH, 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.

197
ompi/contrib/vt/vt/ChangeLog Обычный файл
Просмотреть файл

@ -0,0 +1,197 @@
5.0.0
- initial version
5.0.1
- updated version of internal OTF to 1.1.3
5.0.2
- updated version of internal OTF to 1.1.4
5.0.3
- updated version of internal OTF to 1.1.5
- fixed a bug in GNU compiler interface which might have caused
a segmentation fault during flushing the trace buffer
5.0.4
- fixed a bug which occurred on Opteron systems (faulty timestamps)
- made sure that the ids of process groups and processes are
different (for analyzing trace files)
5.0.5
- fixed a bug in elg_otfunify which occurred if the environment
variable ELG_PFORM_DIR was set
5.0.6
- added creator informations of tracefile (tracelib, version, date
and time)
- reduced offset of process group token
- improved name of process groups
5.1.0
- counter event record will be wrote before leave event record
- added region filter and grouping managment
5.1.1
- write list of filtered regions to file (*.x.filt)
- specified flags of 'ar' in Makefile.defs (AFLAG) will
be assign to internal OTF configure script
5.1.2
- updated version of internal OTF to 1.1.8
5.1.3
- fixed little bugs in build system, which occurred if multiple
mode building used (Makefile.32-64)
- added support for clusters of IBM Power3/4 machines
and Linux PPC cluster with IBM compilers
5.1.4
- updated version of internal OTF to 1.1.9
- fixed a bug in elg_otfunify which occurred if compiled with PGI
and used OMP parallelization
- enhanced progress display of elg_otfunify
5.1.5
- fixed a bug in elg_otfunify time synchronization
5.1.6
- updated version of internal OTF to 1.2.11
- fixed a bug: record the REAL buffer-length of a MPI non-blocking
receive operation
- added wrapper for MPI function 'MPI_Probe'
- added Open MPI support
- added a simple "configure" command
(see INSTALL)
5.1.7
- updated version of internal OTF to 1.2.13
5.2.0
- updated version of internal OTF to 1.2.18 (see extlib/otf/ChangeLog)
- replaced build system by GNU Autoconf/Automake
- changed base name (e.g. environment variables, source files) to VT...
(see doc/USAGE)
- added OpenMP support by using OPARI instrumentation tool
- write process group records, which contain the location of processes
(node name)
- added tool 'vtconfig' to simplify determining the right compiler and
linker flags
5.2.1
- fixed several performance issues
- improved mechanism for getting clock cycles on IBM PPC64 machines
- the user can specify the mechanism, which used for getting timer
(only for Linux, SGI Altix, IBM AIX, Cray X1
- see config.h after configure)
5.2.2
- fixed a bug in region filter which occurred by tracing OpenMP apps.
instrumented by compiler (vtinst)
- added option '-k' for vtunify to keep input trace files
5.2.3
- changed install directory of documentations from 'doc' to 'info'
(adjustable by configure option '--infodir')
- forward configure options '--exec-prefix', '--bindir', '--libdir', ',
'--includedir', and '--infodir' to configure command of internal OTF
- added checking for CPP-Style Fortran preprocessor of gfortran
- added checking for location of 'mmtimer.h'
- made sure that peers of events (e.g. msg. send enter + msg. send)
have the same timestamp
- clock synchronization can be forced
(see config.h after configure)
5.2.4
- updated version of internal OTF to 1.2.19 (see extlib/otf/ChangeLog)
- fixed compile error, which occurred by using old SUN compilers
- added a configure summary
- added HP MPI support
- renamed Fortran MPI wrapper library to 'libvt.fmpi' to avoid possible
name conflicts
- fixed a bug (integer overflow) in mechanism for getting timer on
Linux systems
5.2.5
- fixed potentially race condition by tracing OpenMP apps.
- fixed some little memory leaks
- fixed native counter issue on IA64 systems
- added check for header files 'stdint.h' and 'inttypes.h'; if none of
these files found, then own integer types will be defined
5.3.0
- updated version of internal OTF to 1.3.4 (see extlib/otf/ChangeLog)
- added support for automatic instrumentation by using Intel compiler
version 10.x (uses new compiler flag '-finstrument-functions')
- added support for binary instrumentation by using Dyninst
- added support for GLIBC's memory allocation tracing
(see doc/UserManual*)
- bugfix: corrected process id for OpenMP collective operations
- changed default function/region group from 'USR' to 'Application'
- if only MPI-functions are instrumented, then entry-record of
function 'user' will be generated before MPI_Init
- added trace filter generator tool 'vtfilter'
(see doc/USAGE.vtfilter)
- added support for multiple compiler-instrumentations from one
installation of VampirTrace (see INSTALL)
- replaced vtinst, vtinst-pomp, and vtinst-dyn by VT's compiler
wrapper (see doc/UserManual* and doc/USAGE.compinst)
- added simple example applications
- changed install directory of documentations from '$prefix/info'
to '$prefix/share/vampirtrace/doc'
- changed install directory of metrics-, filter-, and grouping
configuration from '$prefix/doc' to '$prefix/share/vampirtrace'
5.3.1
- set default trace call limit for all regions/functions to 100000
5.3.2
- updated version of internal OTF to 1.3.7 (see extlib/otf/ChangeLog)
- improved autoconf's m4 scripts for cross buildings
- added support for VPATH builds
5.4.0
- updated version of internal OTF to 1.3.8 (see extlib/otf/ChangeLog)
- added support for user defined counters
- if available, PAPI cycle counter can be used as timer
(see config.h after configure)
- recording of events will be stopped if the maximum number of
buffer flushs (env. VT_MAX_FLUSHES) was reached
- added support for LIBC's I/O tracing
- improved autoconf's m4 scripts for cross buildings
- default settings for the compiler wrappers will be stored
in share/vampirtrace/vt*-wrapper-data.txt
- vtfilter: - direct filtering without second trace run
- parallelization using OpenMP
5.4.1
- bugfix: added check for I/O functions which are a part of the large
file extensions (e.g. open64, creat64, ...); disable corresponding
wrapper functions, if system doesn't support these
- added environment variable VT_DEMANGLE to enable/disable GNU
demangling of C++ names (default: disabled, due to a bug in older
versions of the GNU library 'liberty')
- disabled support for I/O tracing on MacOS
5.4.2
- bugfix for VPATH builds
- added check for PAPI version to configure script
(only support for version 3.x)
5.4.3
- bugfix for Fortran compiler wrappers (vtf77, vtf90):
OPARI's table source file (opari.tab.c) will be compiled
with the C compiler and flags which were given for VT's
configure (CC/CFLAGS)
(changeable in vt*-wrapper-data.txt)
- bugfixes in vtunify: - keep user's created process groups
for MPI communicators
- reserve sorting of global process group
definitions
5.4.4
- updated version of internal OTF to 1.3.9 (see extlib/otf/ChangeLog)
- fixed a portability bug: use own implementation of function
'strdup()'
- removed variadic macros (they were introduced in C99)
- fixed a bug for determining the timer-resolution for ITC

183
ompi/contrib/vt/vt/INSTALL Обычный файл
Просмотреть файл

@ -0,0 +1,183 @@
How to install and configure VampirTrace
========================================
Basics
------
Building VampirTrace is typically a combination of running "configure"
and "make". Execute the following commands to install VampirTrace from
within the directory at the top of the tree:
$ ./configure --prefix=/where/to/install
[...lots of output...]
$ make all install
If you need special access to install, then you can execute "make
all" as a user with write permissions in the build tree, and a
separate "make install" as a user with write permissions to the
install tree.
However, for more details, read also the following instructions. Sometimes
it might be necessary to provide ./configure with options, e.g.
specifications of paths or compilers. Consult the CONFIG-EXAMPLES file to
get an idea of how to configure VampirTrace for your platform.
Configure Options
-----------------
* 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=c89 CFLAGS=-O2 LIBS=-lposix
* Installation Names
By default, `make install' will install the package's files in
`/usr/local/bin', /usr/local/include', etc. You can specify an
installation prefix other than `/usr/local' by giving `configure' the
option `--prefix=PATH'.
* Optional Features
--enable-compinst=COMPINSTLIST
enable support for compiler instrumentation
(gnu,intel,pgi,phat,xl,ftrace), default:
automatically by configure
NOTE: the first item in list is the default
instrumentation type for the compiler-wrapper
--enable-mpi enable MPI support, default: enable if
MPI-installation found by configure
--enable-omp enable OpenMP support, default: enable if given
compiler supports OpenMP
--enable-hyb enable Hybrid (MPI/OpenMP) support, default:
enable if MPI-installation found and given
compiler supports OpenMP
--enable-dyninst enable support for binary-instrumentation using
Dyninst, default: enable if found by configure
Note: needs Dyninst version 5.0.1 or higher !
(downloadable at http://www.dyninst.org)
--enable-dyninst-attlib build shared library which attach dyninst to running
user's application, default: enable if dyninst found
by configure and system supports shared libraries
--enable-papi enable PAPI hardware counter support, default:
enable if found by configure
If your system does not have a MPI Fortran library, set
--enable-fmpi-lib build MPI Fortran support library, default: enable
if no MPI Fortran library found by configure
* Important Optional Packages
--with-local-tmp-dir=LTMPDIR
give the path for node-local temporary directory,
default: /tmp
Specify name of (SMP) node-local directory that can be used to store
temporary trace files.
If you would like to use an external version of OTF library, set
--with-extern-otf use external OTF library, default: not set
--with-extern-otf-dir=OTFDIR
give the path for OTF, default: /usr
--with-otf-extra-opts=OTFEXTRAOPTS
extra options for OTF configuration
(only for internal OTF version)
--with-otf-lib=OTFLIB use given otf lib, default: -lotf -lz
If used OTF library was built without zlib support, then it will do
to set OTFLIB to '-lotf'.
--with-dyninst-dir=DYNIDIR
give the path for DYNINST, default: /usr
--with-papi-dir=PAPIDIR
give the path for PAPI, default: /usr
If you don't have specified the environment variable MPICC
(MPI compiler command), use following options to set location
of your MPI installation:
--with-mpi-dir=MPIDIR give the path for MPI, default: /usr
--with-mpi-inc-dir=MPIINCDIR
give the path for MPI-include-files, default:
MPIDIR/include
--with-mpi-lib-dir=MPILIBDIR
give the path for MPI-libraries, default:
MPIDIR/lib
--with-mpi-lib use given mpi lib
--with-pmpi-lib use given pmpi lib
If your system does not have a MPI Fortran library,
set '--enable-fmpi-lib' (see above), otherwise set
--with-fmpi-lib use given fmpi lib
Set up the Environment
----------------------
Add the bin subdirectory of the installation directory to your PATH
environment variable. To use VampirTrace with Dyninst, you will also need
to add the lib subdirectory to your LD_LIBRARY_PATH environment variable:
for csh and tcsh:
> setenv PATH <vampirtrace-install>/bin:$PATH
> setenv LD_LIBRARY_PATH <vampirtrace-install>/lib:$LD_LIBRARY_PATH
for bash and sh:
$ export PATH=<vampirtrace-install>/bin:$PATH
$ export LD_LIBRARY_PATH=<vampirtrace-install>/lib:$LD_LIBRARY_PATH
Notes for Developers
--------------------
* Building
If you have checked out a DEVELOPER'S COPY of VampirTrace (i.e. you
checked out from CVS), you should first run:
$ ./bootstrap
(Note that GNU Autoconf 2.53 or higher is required.)
* Creating a distribution tarball (VampirTrace-X.X.X.tar.gz)
If you would like create a new distribution tarball, run:
$ ./makedist <version> <otftarball>
instead of 'make dist'.
The script 'makedist' adapts the version number (<version>) in
configure.in and extracts given OTF-tarball (<otftarball>) in
./extlib/otf.

25
ompi/contrib/vt/vt/Makefile.am Обычный файл
Просмотреть файл

@ -0,0 +1,25 @@
SUBDIRS = \
extlib \
vtlib \
tools \
doc
EXTRA_DIST = \
examples/c/Makefile \
examples/c/Makefile.config \
examples/c/hello.c \
examples/c/pi.c \
examples/c/ring.c \
examples/cxx/Makefile \
examples/cxx/Makefile.config \
examples/cxx/hello.cc \
examples/cxx/pi.cc \
examples/cxx/ring.cc \
examples/fortran/Makefile \
examples/fortran/Makefile.config \
examples/fortran/hello.F \
examples/fortran/pi.F \
examples/fortran/ring.F \
CONFIG-EXAMPLES \
VERSION

689
ompi/contrib/vt/vt/Makefile.in Обычный файл
Просмотреть файл

@ -0,0 +1,689 @@
# Makefile.in generated by automake 1.10 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006 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@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@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 = .
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
$(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
compile config.guess config.sub depcomp install-sh missing
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-dvi-recursive install-exec-recursive \
install-html-recursive install-info-recursive \
install-pdf-recursive install-ps-recursive install-recursive \
installcheck-recursive installdirs-recursive pdf-recursive \
ps-recursive uninstall-recursive
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
{ test ! -d $(distdir) \
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -fr $(distdir); }; }
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BFDINCDIR = @BFDINCDIR@
BFDLIB = @BFDLIB@
BFDLIBDIR = @BFDLIBDIR@
CC = @CC@
CCAS = @CCAS@
CCASDEPMODE = @CCASDEPMODE@
CCASFLAGS = @CCASFLAGS@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXCPP_FOR_BUILD = @CXXCPP_FOR_BUILD@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@
CXX_FOR_BUILD = @CXX_FOR_BUILD@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLINCDIR = @DLINCDIR@
DLLIB = @DLLIB@
DLLIBDIR = @DLLIBDIR@
DYNIINCDIR = @DYNIINCDIR@
DYNILIB = @DYNILIB@
DYNILIBDIR = @DYNILIBDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
F77 = @F77@
FC = @FC@
FCFLAGS = @FCFLAGS@
FFLAGS = @FFLAGS@
FMPILIB = @FMPILIB@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@
LDSHFLAG = @LDSHFLAG@
LIBERTYINCDIR = @LIBERTYINCDIR@
LIBERTYLIB = @LIBERTYLIB@
LIBERTYLIBDIR = @LIBERTYLIBDIR@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBS_FOR_BUILD = @LIBS_FOR_BUILD@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
MPICC = @MPICC@
MPICFLAGS = @MPICFLAGS@
MPIDIR = @MPIDIR@
MPIINCDIR = @MPIINCDIR@
MPILIB = @MPILIB@
MPILIBDIR = @MPILIBDIR@
OBJEXT = @OBJEXT@
OMPFLAG = @OMPFLAG@
OTFDIR = @OTFDIR@
OTFINCDIR = @OTFINCDIR@
OTFLIB = @OTFLIB@
OTFLIBDIR = @OTFLIBDIR@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PAPIINCDIR = @PAPIINCDIR@
PAPILIB = @PAPILIB@
PAPILIBDIR = @PAPILIBDIR@
PATH_SEPARATOR = @PATH_SEPARATOR@
PLATFORM = @PLATFORM@
PMPILIB = @PMPILIB@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
VTDYNATTLIB = @VTDYNATTLIB@
VT_WRAPPER_AVAIL_INST = @VT_WRAPPER_AVAIL_INST@
VT_WRAPPER_DEFAULT_INST = @VT_WRAPPER_DEFAULT_INST@
VT_WRAPPER_EXTRA_CFLAGS = @VT_WRAPPER_EXTRA_CFLAGS@
VT_WRAPPER_EXTRA_CXXFLAGS = @VT_WRAPPER_EXTRA_CXXFLAGS@
VT_WRAPPER_EXTRA_FCFLAGS = @VT_WRAPPER_EXTRA_FCFLAGS@
VT_WRAPPER_EXTRA_FFLAGS = @VT_WRAPPER_EXTRA_FFLAGS@
VT_WRAPPER_EXTRA_LDFLAGS = @VT_WRAPPER_EXTRA_LDFLAGS@
VT_WRAPPER_EXTRA_LIBS = @VT_WRAPPER_EXTRA_LIBS@
VT_WRAPPER_INCDIR = @VT_WRAPPER_INCDIR@
VT_WRAPPER_LIBDIR = @VT_WRAPPER_LIBDIR@
VT_WRAPPER_OPARI_BIN = @VT_WRAPPER_OPARI_BIN@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
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@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
SUBDIRS = \
extlib \
vtlib \
tools \
doc
EXTRA_DIST = \
examples/c/Makefile \
examples/c/Makefile.config \
examples/c/hello.c \
examples/c/pi.c \
examples/c/ring.c \
examples/cxx/Makefile \
examples/cxx/Makefile.config \
examples/cxx/hello.cc \
examples/cxx/pi.cc \
examples/cxx/ring.cc \
examples/fortran/Makefile \
examples/fortran/Makefile.config \
examples/fortran/hello.F \
examples/fortran/pi.F \
examples/fortran/ring.F \
CONFIG-EXAMPLES \
VERSION
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
am--refresh:
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
cd $(srcdir) && $(AUTOMAKE) --gnu \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu Makefile
.PRECIOUS: 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)
cd $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
config.h: stamp-h1
@if test ! -f $@; then \
rm -f stamp-h1; \
$(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
else :; fi
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
cd $(top_builddir) && $(SHELL) ./config.status config.h
$(srcdir)/config.h.in: $(am__configure_deps)
cd $(top_srcdir) && $(AUTOHEADER)
rm -f stamp-h1
touch $@
distclean-hdr:
-rm -f config.h stamp-h1
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
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 || \
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
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 $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
distdir=`$(am__cd) $(distdir) && pwd`; \
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$top_distdir" \
distdir="$$distdir/$$subdir" \
am__remove_distdir=: \
am__skip_length_check=: \
distdir) \
|| exit 1; \
fi; \
done
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -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) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
$(am__remove_distdir)
dist-tarZ: distdir
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__remove_distdir)
dist-shar: distdir
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
$(am__remove_distdir)
dist dist-all: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__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*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
chmod -R a-w $(distdir); chmod a+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
chmod a-w $(distdir)
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& cd $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(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
$(am__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:
@cd $(distuninstallcheck_dir) \
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|| { 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 config.h
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
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 mostlyclean-am
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
info: info-recursive
info-am:
install-data-am:
install-dvi: install-dvi-recursive
install-exec-am:
install-html: install-html-recursive
install-info: install-info-recursive
install-man:
install-pdf: install-pdf-recursive
install-ps: install-ps-recursive
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:
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
install-strip
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
all all-am am--refresh check check-am clean clean-generic \
ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
dist-shar dist-tarZ dist-zip distcheck distclean \
distclean-generic distclean-hdr 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-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-recursive uninstall uninstall-am
# 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:

0
ompi/contrib/vt/vt/NEWS Обычный файл
Просмотреть файл

10
ompi/contrib/vt/vt/README Обычный файл
Просмотреть файл

@ -0,0 +1,10 @@
VampirTrace
VampirTrace consists of a tool set and a run-time library for instrumentation and tracing of software applications. In particular, it is tailored towards parallel and distributed High Performance Computing (HPC) applications.
The instrumentation part modifies a given application in order to inject additional measurement calls during run-time. The tracing part provides the actual measurement functionality used by the instrumentation calls. By this means, a variety of detailed performance properties can be collected and recorded during run-time.
VampirTrace 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'.
For instructions on how use VampirTrace to instrument application programs so that they produce an OTF event trace when executed, see 'doc/USAGE'.

37
ompi/contrib/vt/vt/VERSION Обычный файл
Просмотреть файл

@ -0,0 +1,37 @@
# This is the VERSION file for VampirTrace, describing the precise
# version of VampirTrace in this distribution. The various components of
# the version number below are combined to form a single version
# number string.
# major, minor, and release are generally combined in the form
# <major>.<minor>.<release>. If release is zero, then it is omitted.
major=5
minor=4
release=4
# greek is used for alpha or beta release tags. If it is non-empty,
# it will be appended to the version number. It does not have to be
# numeric. Common examples include a1 (alpha release 1),
# b1 (beta release 1), sc2005 (Super Computing 2005 release). The
# only requirement is that it must be entirely printable ASCII
# characters and have no white space.
greek=
# If want_svn=1, then the SVN r number will be included in the overall
# VampirTrace version number in some form.
want_svn=0
# If svn_r=-1, then the SVN r numbere will be obtained dynamically at
# run time, either 1) via the "svnversion" command (if this is a
# Subversion checkout) in the form "r<svn_r>", or b) with the date (if
# this is not a Subversion checkout, and the svnversion command cannot
# be used) in the form of "svn<date>". Alternatively, if svn_r is not
# -1, the value of svn_r will be directly appended to the version
# string. This happens during "make dist", for example: if the
# distribution tarball is being made from an SVN checkout, the value
# of svn_r in this file is replaced with the output of "svnversion".
svn_r=

1705
ompi/contrib/vt/vt/acinclude.m4 Обычный файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

931
ompi/contrib/vt/vt/aclocal.m4 поставляемый Обычный файл
Просмотреть файл

@ -0,0 +1,931 @@
# generated automatically by aclocal 1.10 -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
# 2005, 2006 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# 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_if(m4_PACKAGE_VERSION, [2.61],,
[m4_fatal([this file was generated for autoconf 2.61.
You have another version of autoconf. If you want to use that,
you should regenerate the build system entirely.], [63])])
# Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_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.10'
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.10], [],
[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 AC_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
[AM_AUTOMAKE_VERSION([1.10])dnl
_AM_AUTOCONF_VERSION(m4_PACKAGE_VERSION)])
# Figure out how to run the assembler. -*- Autoconf -*-
# Copyright (C) 2001, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 5
# AM_PROG_AS
# ----------
AC_DEFUN([AM_PROG_AS],
[# By default we simply use the C compiler to build assembly code.
AC_REQUIRE([AC_PROG_CC])
test "${CCAS+set}" = set || CCAS=$CC
test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS
AC_ARG_VAR([CCAS], [assembler compiler command (defaults to CC)])
AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)])
_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl
])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
#
# Of course, Automake must honor this variable whenever it calls a
# tool from the auxiliary directory. The problem is that $srcdir (and
# therefore $ac_aux_dir as well) can be either absolute or relative,
# depending on how configure is run. This is pretty annoying, since
# it makes $ac_aux_dir quite unusable in subdirectories: in the top
# source directory, any form will work fine, but in subdirectories a
# relative path needs to be adjusted first.
#
# $ac_aux_dir/missing
# fails when called from a subdirectory if $ac_aux_dir is relative
# $top_srcdir/$ac_aux_dir/missing
# fails if $ac_aux_dir is absolute,
# fails when called from a subdirectory in a VPATH build with
# a relative $ac_aux_dir
#
# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
# are both prefixed by $srcdir. In an in-source build this is usually
# harmless because $srcdir is `.', but things will broke when you
# start a VPATH build or use an absolute $srcdir.
#
# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
# and then we would define $MISSING as
# MISSING="\${SHELL} $am_aux_dir/missing"
# This will work as long as MISSING is not called from configure, because
# unfortunately $(top_srcdir) has no meaning in configure.
# However there are other variables, like CC, which are often used in
# configure, and could therefore not use this "fixed" $ac_aux_dir.
#
# Another solution, used here, is to always expand $ac_aux_dir to an
# absolute PATH. The drawback is that using absolute paths prevent a
# configured tree to be moved without reconfiguration.
AC_DEFUN([AM_AUX_DIR_EXPAND],
[dnl Rely on autoconf to set up CDPATH properly.
AC_PREREQ([2.50])dnl
# expand $ac_aux_dir to an absolute path
am_aux_dir=`cd $ac_aux_dir && pwd`
])
# AM_CONDITIONAL -*- Autoconf -*-
# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 8
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
# -------------------------------------
# Define a conditional.
AC_DEFUN([AM_CONDITIONAL],
[AC_PREREQ(2.52)dnl
ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
AC_SUBST([$1_TRUE])dnl
AC_SUBST([$1_FALSE])dnl
_AM_SUBST_NOTMAKE([$1_TRUE])dnl
_AM_SUBST_NOTMAKE([$1_FALSE])dnl
if $2; then
$1_TRUE=
$1_FALSE='#'
else
$1_TRUE='#'
$1_FALSE=
fi
AC_CONFIG_COMMANDS_PRE(
[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
AC_MSG_ERROR([[conditional "$1" was never defined.
Usually this means the macro was only invoked conditionally.]])
fi])])
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 9
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
# written in clear, in which case automake, when reading aclocal.m4,
# will think it sees a *use*, and therefore will trigger all it's
# C support machinery. Also note that it means that autoscan, seeing
# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
# _AM_DEPENDENCIES(NAME)
# ----------------------
# See how the compiler implements dependency checking.
# NAME is "CC", "CXX", "GCJ", or "OBJC".
# We try a few techniques and use that to set a single cache variable.
#
# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
# dependency, and given that the user is not expected to run this macro,
# just rely on AC_PROG_CC.
AC_DEFUN([_AM_DEPENDENCIES],
[AC_REQUIRE([AM_SET_DEPDIR])dnl
AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
AC_REQUIRE([AM_MAKE_INCLUDE])dnl
AC_REQUIRE([AM_DEP_TRACK])dnl
ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
[$1], CXX, [depcc="$CXX" am_compiler_list=],
[$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
[$1], UPC, [depcc="$UPC" am_compiler_list=],
[$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
[depcc="$$1" am_compiler_list=])
AC_CACHE_CHECK([dependency style of $depcc],
[am_cv_$1_dependencies_compiler_type],
[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
# We make a subdir and do the tests there. Otherwise we can end up
# making bogus files that we don't know about and never remove. For
# instance it was reported that on HP-UX the gcc test will end up
# making a dummy file named `D' -- because `-MD' means `put the output
# in D'.
mkdir conftest.dir
# Copy depcomp to subdir because otherwise we won't find it if we're
# using a relative directory.
cp "$am_depcomp" conftest.dir
cd conftest.dir
# We will build objects and dependencies in a subdirectory because
# it helps to detect inapplicable dependency modes. For instance
# both Tru64's cc and ICC support -MD to output dependencies as a
# side effect of compilation, but ICC will put the dependencies in
# the current directory while Tru64 will put them in the object
# directory.
mkdir sub
am_cv_$1_dependencies_compiler_type=none
if test "$am_compiler_list" = ""; then
am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
fi
for depmode in $am_compiler_list; do
# Setup a source with many dependencies, because some compilers
# like to wrap large dependency lists on column 80 (with \), and
# we should not choose a depcomp mode which is confused by this.
#
# We need to recreate these files for each test, as the compiler may
# overwrite some of them when testing with obscure command lines.
# This happens at least with the AIX C compiler.
: > sub/conftest.c
for i in 1 2 3 4 5 6; do
echo '#include "conftst'$i'.h"' >> sub/conftest.c
# Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
# Solaris 8's {/usr,}/bin/sh.
touch sub/conftst$i.h
done
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
case $depmode in
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
;;
none) break ;;
esac
# 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.
if depmode=$depmode \
source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
$SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} 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 sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
# icc doesn't choke on unknown options, it will just issue warnings
# or remarks (even with -Werror). So we grep stderr for any message
# that says an option was ignored or not supported.
# When given -MP, icc 7.0 and 7.1 complain thusly:
# icc: Command line warning: ignoring option '-M'; no argument required
# The diagnosis changed in icc 8.0:
# icc: Command line remark: option '-MP' not supported
if (grep 'ignoring option' conftest.err ||
grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
am_cv_$1_dependencies_compiler_type=$depmode
break
fi
fi
done
cd ..
rm -rf conftest.dir
else
am_cv_$1_dependencies_compiler_type=none
fi
])
AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
AM_CONDITIONAL([am__fastdep$1], [
test "x$enable_dependency_tracking" != xno \
&& test "$am_cv_$1_dependencies_compiler_type" = gcc3])
])
# AM_SET_DEPDIR
# -------------
# Choose a directory name for dependency files.
# This macro is AC_REQUIREd in _AM_DEPENDENCIES
AC_DEFUN([AM_SET_DEPDIR],
[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
])
# AM_DEP_TRACK
# ------------
AC_DEFUN([AM_DEP_TRACK],
[AC_ARG_ENABLE(dependency-tracking,
[ --disable-dependency-tracking speeds up one-time build
--enable-dependency-tracking do not reject slow dependency extractors])
if test "x$enable_dependency_tracking" != xno; then
am_depcomp="$ac_aux_dir/depcomp"
AMDEPBACKSLASH='\'
fi
AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
AC_SUBST([AMDEPBACKSLASH])dnl
_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
])
# Generate code to set up dependency tracking. -*- Autoconf -*-
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
#serial 3
# _AM_OUTPUT_DEPENDENCY_COMMANDS
# ------------------------------
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
[for mf in $CONFIG_FILES; 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 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then
dirpart=`AS_DIRNAME("$mf")`
else
continue
fi
# Extract the definition of DEPDIR, am__include, and am__quote
# from the Makefile without running `make'.
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
test -z "am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# When using ansi2knr, U may be empty or an underscore; expand it
U=`sed -n 's/^U = //p' < "$mf"`
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
# simplest approach to changing $(DEPDIR) to its actual value in the
# expansion.
for file in `sed -n "
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue
fdir=`AS_DIRNAME(["$file"])`
AS_MKDIR_P([$dirpart/$fdir])
# echo "creating $dirpart/$file"
echo '# dummy' > "$dirpart/$file"
done
done
])# _AM_OUTPUT_DEPENDENCY_COMMANDS
# AM_OUTPUT_DEPENDENCY_COMMANDS
# -----------------------------
# This macro should only be invoked once -- use via AC_REQUIRE.
#
# This code is only required when automatic dependency tracking
# is enabled. FIXME. This creates each `.P' file that we will
# need in order to bootstrap the dependency handling code.
AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
[AC_CONFIG_COMMANDS([depfiles],
[test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
])
# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 8
# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
# Do all the work for Automake. -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
# 2005, 2006 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 12
# This macro actually does too much. Some checks are only needed if
# your package does certain things. But this isn't really a big deal.
# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
# AM_INIT_AUTOMAKE([OPTIONS])
# -----------------------------------------------
# The call with PACKAGE and VERSION arguments is the old style
# call (pre autoconf-2.50), which is being phased out. PACKAGE
# and VERSION should now be passed to AC_INIT and removed from
# the call to AM_INIT_AUTOMAKE.
# We support both call styles for the transition. After
# the next Automake release, Autoconf can make the AC_INIT
# arguments mandatory, and then we can depend on a new Autoconf
# release and drop the old call support.
AC_DEFUN([AM_INIT_AUTOMAKE],
[AC_PREREQ([2.60])dnl
dnl Autoconf wants to disallow AM_ names. We explicitly allow
dnl the ones we care about.
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
AC_REQUIRE([AC_PROG_INSTALL])dnl
if test "`cd $srcdir && pwd`" != "`pwd`"; then
# Use -I$(srcdir) only when $(srcdir) != ., so that make's output
# is not polluted with repeated "-I."
AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
# test to see if srcdir already configured
if test -f $srcdir/config.status; then
AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
fi
fi
# test whether we have cygpath
if test -z "$CYGPATH_W"; then
if (cygpath --version) >/dev/null 2>/dev/null; then
CYGPATH_W='cygpath -w'
else
CYGPATH_W=echo
fi
fi
AC_SUBST([CYGPATH_W])
# Define the identity of the package.
dnl Distinguish between old-style and new-style calls.
m4_ifval([$2],
[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
AC_SUBST([PACKAGE], [$1])dnl
AC_SUBST([VERSION], [$2])],
[_AM_SET_OPTIONS([$1])dnl
dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
[m4_fatal([AC_INIT should be called with package and version arguments])])dnl
AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
_AM_IF_OPTION([no-define],,
[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
# Some tools Automake needs.
AC_REQUIRE([AM_SANITY_CHECK])dnl
AC_REQUIRE([AC_ARG_PROGRAM])dnl
AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
AM_MISSING_PROG(AUTOCONF, autoconf)
AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
AM_MISSING_PROG(AUTOHEADER, autoheader)
AM_MISSING_PROG(MAKEINFO, makeinfo)
AM_PROG_INSTALL_SH
AM_PROG_INSTALL_STRIP
AC_REQUIRE([AM_PROG_MKDIR_P])dnl
# We need awk for the "check" target. The system "awk" is bad on
# some platforms.
AC_REQUIRE([AC_PROG_AWK])dnl
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
[_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
[_AM_PROG_TAR([v7])])])
_AM_IF_OPTION([no-dependencies],,
[AC_PROVIDE_IFELSE([AC_PROG_CC],
[_AM_DEPENDENCIES(CC)],
[define([AC_PROG_CC],
defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
AC_PROVIDE_IFELSE([AC_PROG_CXX],
[_AM_DEPENDENCIES(CXX)],
[define([AC_PROG_CXX],
defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
AC_PROVIDE_IFELSE([AC_PROG_OBJC],
[_AM_DEPENDENCIES(OBJC)],
[define([AC_PROG_OBJC],
defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
])
])
# 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_stamp_count=1
for _am_header in $config_headers :; do
case $_am_header in
$1 | $1:* )
break ;;
* )
_am_stamp_count=`expr $_am_stamp_count + 1` ;;
esac
done
echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_PROG_INSTALL_SH
# ------------------
# Define $install_sh.
AC_DEFUN([AM_PROG_INSTALL_SH],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
AC_SUBST(install_sh)])
# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 2
# Check whether the underlying file-system supports filenames
# with a leading dot. For instance MS-DOS doesn't.
AC_DEFUN([AM_SET_LEADING_DOT],
[rm -rf .tst 2>/dev/null
mkdir .tst 2>/dev/null
if test -d .tst; then
am__leading_dot=.
else
am__leading_dot=_
fi
rmdir .tst 2>/dev/null
AC_SUBST([am__leading_dot])])
# Check to see how 'make' treats includes. -*- Autoconf -*-
# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 3
# 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 done
.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
# We grep out `Entering directory' and `Leaving directory'
# messages which can occur if `w' ends up in MAKEFLAGS.
# In particular we don't look at `^make:' because GNU make might
# be invoked under some other name (usually "gmake"), in which
# case it prints its new name instead of `make'.
if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
am__include=include
am__quote=
_am_result=GNU
fi
# Now try BSD make style include.
if test "$am__include" = "#"; then
echo '.include "confinc"' > confmf
if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
am__include=.include
am__quote="\""
_am_result=BSD
fi
fi
AC_SUBST([am__include])
AC_SUBST([am__quote])
AC_MSG_RESULT([$_am_result])
rm -f confinc confmf
])
# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 5
# AM_PROG_CC_C_O
# --------------
# Like AC_PROG_CC_C_O, but changed for automake.
AC_DEFUN([AM_PROG_CC_C_O],
[AC_REQUIRE([AC_PROG_CC_C_O])dnl
AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
AC_REQUIRE_AUX_FILE([compile])dnl
# FIXME: we rely on the cache variable name because
# there is no other way.
set dummy $CC
ac_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
if eval "test \"`echo '$ac_cv_prog_cc_'${ac_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
dnl Make sure AC_PROG_CC is never called again, or it will override our
dnl setting of CC.
m4_define([AC_PROG_CC],
[m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
])
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 5
# AM_MISSING_PROG(NAME, PROGRAM)
# ------------------------------
AC_DEFUN([AM_MISSING_PROG],
[AC_REQUIRE([AM_MISSING_HAS_RUN])
$1=${$1-"${am_missing_run}$2"}
AC_SUBST($1)])
# AM_MISSING_HAS_RUN
# ------------------
# Define MISSING if not defined so far and test if it supports --run.
# If it does, set am_missing_run to use it, otherwise, to nothing.
AC_DEFUN([AM_MISSING_HAS_RUN],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
AC_REQUIRE_AUX_FILE([missing])dnl
test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
# Use eval to expand $SHELL
if eval "$MISSING --run true"; then
am_missing_run="$MISSING --run "
else
am_missing_run=
AC_MSG_WARN([`missing' script is too old or missing])
fi
])
# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_PROG_MKDIR_P
# ---------------
# Check for `mkdir -p'.
AC_DEFUN([AM_PROG_MKDIR_P],
[AC_PREREQ([2.60])dnl
AC_REQUIRE([AC_PROG_MKDIR_P])dnl
dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
dnl while keeping a definition of mkdir_p for backward compatibility.
dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
dnl Makefile.ins that do not define MKDIR_P, so we do our own
dnl adjustment using top_builddir (which is defined more often than
dnl MKDIR_P).
AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
case $mkdir_p in
[[\\/$]]* | ?:[[\\/]]*) ;;
*/*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
esac
])
# Helper functions for option handling. -*- Autoconf -*-
# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 3
# _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],
[AC_FOREACH([_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])])
# Check to make sure that the build environment is sane. -*- Autoconf -*-
# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 4
# AM_SANITY_CHECK
# ---------------
AC_DEFUN([AM_SANITY_CHECK],
[AC_MSG_CHECKING([whether build environment is sane])
# Just in case
sleep 1
echo timestamp > conftest.file
# Do `set' in a subshell so we don't clobber the current shell's
# arguments. Must try -L first in case configure is actually a
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink's containing
# directory).
if (
set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
if test "$[*]" = "X"; then
# -L didn't work.
set X `ls -t $srcdir/configure conftest.file`
fi
rm -f conftest.file
if test "$[*]" != "X $srcdir/configure conftest.file" \
&& test "$[*]" != "X conftest.file $srcdir/configure"; then
# If neither matched, then we have a broken ls. This can happen
# if, for instance, CONFIG_SHELL is bash and it inherits a
# broken ls alias from the environment. This has actually
# happened. Such a system could not be considered "sane".
AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
alias in your environment])
fi
test "$[2]" = conftest.file
)
then
# Ok.
:
else
AC_MSG_ERROR([newly created file is older than distributed files!
Check your system clock])
fi
AC_MSG_RESULT(yes)])
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_PROG_INSTALL_STRIP
# ---------------------
# One issue with vendor `install' (even GNU) is that you can't
# specify the program used to strip binaries. This is especially
# annoying in cross-compiling environments, where the build's strip
# is unlikely to handle the host's binaries.
# Fortunately install-sh will honor a STRIPPROG variable, so we
# always use install-sh in `make install-strip', and initialize
# STRIPPROG with the value of the STRIP variable (set by the user).
AC_DEFUN([AM_PROG_INSTALL_STRIP],
[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
# Installed binaries are usually stripped using `strip' when the user
# run `make install-strip'. However `strip' might not be the right
# tool to use in cross-compilation environments, therefore Automake
# will honor the `STRIP' environment variable to overrule this program.
dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
if test "$cross_compiling" != no; then
AC_CHECK_TOOL([STRIP], [strip], :)
fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
# Copyright (C) 2006 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 outputing VARIABLE = @VARIABLE@ in Makefile.in.
# This macro is traced by Automake.
AC_DEFUN([_AM_SUBST_NOTMAKE])
# Check how to create a tarball. -*- Autoconf -*-
# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 2
# _AM_PROG_TAR(FORMAT)
# --------------------
# Check how to create a tarball in format FORMAT.
# FORMAT should be one of `v7', `ustar', or `pax'.
#
# Substitute a variable $(am__tar) that is a command
# writing to stdout a FORMAT-tarball containing the directory
# $tardir.
# tardir=directory && $(am__tar) > result.tar
#
# Substitute a variable $(am__untar) that extract such
# a tarball read from stdin.
# $(am__untar) < result.tar
AC_DEFUN([_AM_PROG_TAR],
[# Always define AMTAR for backward compatibility.
AM_MISSING_PROG([AMTAR], [tar])
m4_if([$1], [v7],
[am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
[m4_case([$1], [ustar],, [pax],,
[m4_fatal([Unknown tar format])])
AC_MSG_CHECKING([how to create a $1 tar archive])
# Loop over all known methods to create a tar archive until one works.
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
_am_tools=${am_cv_prog_tar_$1-$_am_tools}
# Do not fold the above two line into one, because Tru64 sh and
# Solaris sh will not grok spaces in the rhs of `-'.
for _am_tool in $_am_tools
do
case $_am_tool in
gnutar)
for _am_tar in tar gnutar gtar;
do
AM_RUN_LOG([$_am_tar --version]) && break
done
am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
am__untar="$_am_tar -xf -"
;;
plaintar)
# Must skip GNU tar: if it does not support --format= it doesn't create
# ustar tarball either.
(tar --version) >/dev/null 2>&1 && continue
am__tar='tar chf - "$$tardir"'
am__tar_='tar chf - "$tardir"'
am__untar='tar xf -'
;;
pax)
am__tar='pax -L -x $1 -w "$$tardir"'
am__tar_='pax -L -x $1 -w "$tardir"'
am__untar='pax -r'
;;
cpio)
am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
am__untar='cpio -i -H $1 -d'
;;
none)
am__tar=false
am__tar_=false
am__untar=false
;;
esac
# If the value was cached, stop now. We just wanted to have am__tar
# and am__untar set.
test -n "${am_cv_prog_tar_$1}" && break
# tar/untar a dummy directory, and stop if the command works
rm -rf conftest.dir
mkdir conftest.dir
echo GrepMe > conftest.dir/file
AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
rm -rf conftest.dir
if test -s conftest.tar; then
AM_RUN_LOG([$am__untar <conftest.tar])
grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
fi
done
rm -rf conftest.dir
AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
AC_MSG_RESULT([$am_cv_prog_tar_$1])])
AC_SUBST([am__tar])
AC_SUBST([am__untar])
]) # _AM_PROG_TAR
m4_include([acinclude.m4])

142
ompi/contrib/vt/vt/compile Исполняемый файл
Просмотреть файл

@ -0,0 +1,142 @@
#! /bin/sh
# Wrapper for compilers which do not understand `-c -o'.
scriptversion=2005-05-14.22
# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# This file is maintained in Automake, please report
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
case $1 in
'')
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: compile [--help] [--version] PROGRAM [ARGS]
Wrapper for compilers which do not understand `-c -o'.
Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
arguments, and rename the output as expected.
If you are trying to build a whole package this is not the
right script to run: please start by reading the file `INSTALL'.
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "compile $scriptversion"
exit $?
;;
esac
ofile=
cfile=
eat=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as `compile cc -o foo foo.c'.
# So we strip `-o arg' only if arg is an object.
eat=1
case $2 in
*.o | *.obj)
ofile=$2
;;
*)
set x "$@" -o "$2"
shift
;;
esac
;;
*.c)
cfile=$1
set x "$@" "$1"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -z "$ofile" || test -z "$cfile"; then
# If no `-o' option was seen then we might have been invoked from a
# pattern rule where we don't need one. That is ok -- this is a
# normal compilation that the losing compiler can handle. If no
# `.c' file was seen then we are probably linking. That is also
# ok.
exec "$@"
fi
# Name of file we expect compiler to create.
cofile=`echo "$cfile" | sed -e 's|^.*/||' -e '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
mv "$cofile" "$ofile"
elif test -f "${cofile}bj"; then
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-end: "$"
# End:

1516
ompi/contrib/vt/vt/config.guess поставляемый Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

179
ompi/contrib/vt/vt/config.h.in Обычный файл
Просмотреть файл

@ -0,0 +1,179 @@
/* config.h.in. Generated from configure.in by autoheader. */
/* Define to 1 to disable clock synchronization */
#undef DISABLE_CLOCK_SYNC
/* Define to 1 if you have the `atexit' function. */
#undef HAVE_ATEXIT
/* Define to 1 if you have the `creat64' function. */
#undef HAVE_CREAT64
/* Define to 1 if you have the <fnmatch.h> header file. */
#undef HAVE_FNMATCH_H
/* Define to 1 if you have the `fopen64' function. */
#undef HAVE_FOPEN64
/* Define to 1 if you have the `fseeko64' function. */
#undef HAVE_FSEEKO64
/* Define to 1 if you have the `fsetpos64' function. */
#undef HAVE_FSETPOS64
/* Define to 1 if you have the `gethostname' function. */
#undef HAVE_GETHOSTNAME
/* Define to 1 if you can use GNU demangling of C++ names. */
#undef HAVE_GNU_DEMANGLE
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define to 1 if you have the <linux/mmtimer.h> header file. */
#undef HAVE_LINUX_MMTIMER_H
/* Define to 1 if you have the `lseek64' function. */
#undef HAVE_LSEEK64
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define to 1 if you have the <mmtimer.h> header file. */
#undef HAVE_MMTIMER_H
/* Define to 1 if MPI supports file access. */
#undef HAVE_MPIO
/* Define to 1 if you have the `open64' function. */
#undef HAVE_OPEN64
/* Define if OpenMP is enabled */
#undef HAVE_OPENMP
/* Define to 1 if you have the `pread64' function. */
#undef HAVE_PREAD64
/* Define to 1 if you have the `pwrite64' function. */
#undef HAVE_PWRITE64
/* Define to 1 if you have the `setenv' function. */
#undef HAVE_SETENV
/* Define to 1 if you have the <sn/mmtimer.h> header file. */
#undef HAVE_SN_MMTIMER_H
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define as the size of MPI_STATUS_SIZE */
#undef MPI_STATUS_SIZE
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
#undef NO_MINUS_C_MINUS_O
/* Name of package */
#undef PACKAGE
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
/* Define to the full name of this package. */
#undef PACKAGE_NAME
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the version of this package. */
#undef PACKAGE_VERSION
/* Path for node-local temporary directory */
#undef PFORM_LDIR
/* The size of `int', as computed by sizeof. */
#undef SIZEOF_INT
/* The size of `long', as computed by sizeof. */
#undef SIZEOF_LONG
/* The size of `mode_t', as computed by sizeof. */
#undef SIZEOF_MODE_T
/* The size of `void*', as computed by sizeof. */
#undef SIZEOF_VOIDP
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Use timer (see below) */
#undef TIMER
/* Use `clock_gettime' function */
#undef TIMER_CLOCK_GETTIME
/* CRAY Real-Time-Clock */
#undef TIMER_CRAY_RTCLOCK
/* Cycle counter (e.g. TSC) */
#undef TIMER_CYCLE_COUNTER
/* dclock */
#undef TIMER_DCLOCK
/* gethrtime */
#undef TIMER_GETHRTIME
/* Use `gettimeofday' function */
#undef TIMER_GETTIMEOFDAY
/* Intel Multimedia Timer */
#undef TIMER_MMTIMER
/* PAPI_get_real_cyc */
#undef TIMER_PAPI_REAL_CYC
/* PAPI_get_real_usec */
#undef TIMER_PAPI_REAL_USEC
/* IBM Power family Real-Time-Clock */
#undef TIMER_POWER_REALTIME
/* RTC (DOES NOT WORK YET WITH FORTRAN CODES) */
#undef TIMER_RTC
/* Read PowerPC 440 time base registers */
#undef TIMER_RTS_GET_TIMEBASE
/* Hardware Switch-Clock (it's necessary to link your application with
'-lswclock') */
#undef TIMER_SWITCH_CLOCK
/* NEC SX HGTIME */
#undef TIMER_SYSSX_HGTIME
/* Version number of package */
#undef VERSION
/* Define to `unsigned int' if <sys/types.h> does not define. */
#undef size_t

1626
ompi/contrib/vt/vt/config.sub поставляемый Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

16267
ompi/contrib/vt/vt/configure поставляемый Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

301
ompi/contrib/vt/vt/configure.in Обычный файл
Просмотреть файл

@ -0,0 +1,301 @@
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.60)
AC_INIT(VampirTrace, 5.4.4, service@vampir.eu)
AM_INIT_AUTOMAKE(VampirTrace, 5.4.4)
AC_CONFIG_SRCDIR(config.h.in)
AM_CONFIG_HEADER(config.h)
ACVT_CONF_INIT
ACVT_CONF_TITLE([Initialization])
# Check for absolute paths of $builddir and $srcdir
top_vt_builddir="`pwd`"
cd "$srcdir"
top_vt_srcdir="`pwd`"
cd "$top_vt_builddir"
AC_MSG_NOTICE([builddir: $top_vt_builddir])
AC_MSG_NOTICE([srcdir: $top_vt_srcdir])
AS_IF([test "$top_vt_builddir" != "$top_vt_srcdir"], AC_MSG_NOTICE([detected VPATH build]))
# Check for type of host system
AC_CANONICAL_HOST
# Correct install paths
AS_IF([test x"$prefix" = "xNONE"], [prefix="$ac_default_prefix"])
AS_IF([test x"$exec_prefix" = "xNONE"], [exec_prefix="$prefix"])
AS_IF([test x"$datarootdir" = x -o "$datarootdir" = "\${prefix}/share"],
[datarootdir="\${prefix}/share/\${PACKAGE_TARNAME}"])
AS_IF([test x"$docdir" = x -o "$docdir" = "\${datarootdir}/doc/\${PACKAGE_TARNAME}"],
[docdir="\${datarootdir}/doc"])
ACVT_CONF_TITLE([Compiler, preprocessor, and programs])
# Check for compiler and preprocessor
AS_IF([test x"$F77" = x -a x"$FC" != x], [F77=$FC])
AC_PROG_CC
AM_PROG_CC_C_O
AC_PROG_CXX
AC_PROG_CPP
AC_PROG_CXXCPP
AC_PROG_F77
AC_PROG_FC
AM_CONDITIONAL(AMHAVECC, test x"$CC" != x)
AM_CONDITIONAL(AMHAVECXX, test x"$CXX" != x)
AM_CONDITIONAL(AMHAVEF77, test x"$F77" != x)
AM_CONDITIONAL(AMHAVEFC, test x"$FC" != x)
# Check for *front-end* C++ compiler, preprocessor, and flags
AC_ARG_VAR(CXX_FOR_BUILD, [C++ compiler command for build system])
AC_ARG_VAR(CXXFLAGS_FOR_BUILD, [C++ compiler flags for build system])
AC_ARG_VAR(CXXCPP_FOR_BUILD, [C++ preprocessor for build system])
AC_ARG_VAR(CPPFLAGS_FOR_BUILD, [C/C++/Objective C preprocessor flags for build system])
AC_ARG_VAR(LDFLAGS_FOR_BUILD, [linker flags for build system])
AC_ARG_VAR(LIBS_FOR_BUILD, [libraries to pass to the linker for build system])
AS_IF([test x"$cross_compiling" = "xyes"],
[
AC_MSG_CHECKING([for C++ compiler for build system ($build)])
AS_IF([test x"$CXX_FOR_BUILD" = x],
[
AC_MSG_RESULT([$CXX])
AC_MSG_NOTICE([no C++ compiler command for build system given
In cross compile mode, it's recommended to build the compiler wrappers and OPARI for the build system. Set \`CXX_FOR_BUILD' to the C++ compiler of build system therefor.])
CXX_FOR_BUILD=$CXX
cxx_for_build_given="no"
],
[
AC_MSG_RESULT([$CXX_FOR_BUILD])
cxx_for_build_given="yes"
])
AS_IF([test x"$CXXFLAGS_FOR_BUILD" = x], [CXXFLAGS_FOR_BUILD=$CXXFLAGS])
AS_IF([test x"$CXXCPP_FOR_BUILD" = x], [CXXCPP_FOR_BUILD=$CXXCPP])
AS_IF([test x"$CPPFLAGS_FOR_BUILD" = x], [CPPFLAGS_FOR_BUILD=$CPPFLAGS])
AS_IF([test x"$LDFLAGS_FOR_BUILD" = x], [LDFLAGS_FOR_BUILD=$LDFLAGS])
AS_IF([test x"$LIBS_FOR_BUILD" = x], [LIBS_FOR_BUILD=$LIBS])
AS_IF([test x"$cxx_for_build_given" = "xyes"],
[
AC_LANG([C++])
sav_CXX=$CXX; sav_CXXFLAGS=$CXXFLAGS; sav_CXXCPP=$CXXCPP
sav_CPPFLAGS=$CPPFLAGS; sav_LDFLAGS=$LDFLAGS; sav_LIBS=$LIBS
CXX=$CXX_FOR_BUILD; CXXFLAGS=$CXXFLAGS_FOR_BUILD; CXXCPP=$CXXCPP_FOR_BUILD
CPPFLAGS=$CPPFLAGS_FOR_BUILD; LDFLAGS=$LDFLAGS_FOR_BUILD; LIBS=$LIBS_FOR_BUILD
AC_MSG_CHECKING([whether the C++ compiler for build system works])
AC_TRY_LINK([], [],
[AC_MSG_RESULT([yes])],
[AC_MSG_ERROR([C++ compiler for build system cannot create executables
See \`config.log' for more details.])])
CXX=$sav_CXX; CXXFLAGS=$sav_CXXFLAGS; CXXCPP=$sav_CXXCPP
CPPFLAGS=$sav_CPPFLAGS; LDFLAGS=$sav_LDFLAGS; LIBS=$sav_LIBS
AC_LANG([C])
])
],
[
# reset *_FOR_BUILD variables, if no cross compiling
CXX_FOR_BUILD=$CXX; CXXFLAGS_FOR_BUILD=$CXXFLAGS; CXXCPP_FOR_BUILD=$CXXCPP
CPPFLAGS_FOR_BUILD=$CPPFLAGS; LDFLAGS_FOR_BUILD=$LDFLAGS; LIBS_FOR_BUILD=$LIBS
])
# Check for programs
AC_ARG_VAR(AR, [archiver command]) #AC_PROG_AR ?
AC_CHECK_PROGS(AR, ar, AR=ar)
AC_PROG_RANLIB
AM_PROG_AS
ACVT_CONF_TITLE([Header files, types, and functions])
# Check for header files
AC_HEADER_STDC
AC_CHECK_HEADERS([stdint.h inttypes.h fnmatch.h])
# Check for datatypes
AC_TYPE_SIZE_T
AC_CHECK_SIZEOF(void*, 8)
AC_CHECK_SIZEOF(int, 4)
AC_CHECK_SIZEOF(long, 8)
AC_CHECK_SIZEOF(mode_t, 4)
# Check for library functions
#AC_REPLACE_FNMATCH
#AC_FUNC_MALLOC
#AC_FUNC_REALLOC
AC_CHECK_FUNCS([atexit gethostname setenv])
# Check for OTF
ACVT_CONF_TITLE([Open Trace Format (OTF) library and tools])
ACVT_OTF
AS_IF([test x"$use_extern_otf" = "xyes" -a x"$otf_error" = "xyes"], [exit 1])
AM_CONDITIONAL(AMEXTERNOTF, test x"$use_extern_otf" = "xyes")
# Check for platform
ACVT_CONF_TITLE([Platform specific setup])
ACVT_PLATFORM
# Check for compiler instrumentation
ACVT_CONF_TITLE([Compiler instrumentation])
ACVT_COMPINST
AS_IF([test x"$force_compinst" = "xyes" -a x"$compinst_error" = "xyes"], [exit 1])
AS_IF([test x"$enable_config_titles" = "xyes" -a x"$check_compinst" = "xno"],
[AC_MSG_NOTICE([disabled via command line switch])])
AM_CONDITIONAL(AMBUILDCOMPINST_GNU, test x"$build_compinst_gnu" = "xyes")
AM_CONDITIONAL(AMBUILDCOMPINST_INTEL, test x"$build_compinst_intel" = "xyes")
AM_CONDITIONAL(AMBUILDCOMPINST_PGI, test x"$build_compinst_pgi" = "xyes")
AM_CONDITIONAL(AMBUILDCOMPINST_PHAT, test x"$build_compinst_phat" = "xyes")
AM_CONDITIONAL(AMBUILDCOMPINST_XL, test x"$build_compinst_xl" = "xyes")
AM_CONDITIONAL(AMBUILDCOMPINST_FTRACE, test x"$build_compinst_ftrace" = "xyes")
AM_CONDITIONAL(AMHAVEBFD, test x"$have_bfd" = "xyes")
# Check for binary instrumentation by Dyninst
ACVT_CONF_TITLE([Binary instrumentation by Dyninst])
ACVT_DYNINST
AS_IF([test x"$force_dyninst" = "xyes" -a x"$dyninst_error" = "xyes"], [exit 1])
AS_IF([test x"$force_dynattlib" = "xyes" -a x"$dynattlib_error" = "xyes"], [exit 1])
AS_IF([test x"$enable_config_titles" = "xyes" -a x"$check_dyninst" = "xno"],
[AC_MSG_NOTICE([disabled via command line switch])])
AM_CONDITIONAL(AMHAVEDYNINST, test x"$have_dyninst" = "xyes")
AM_CONDITIONAL(AMBUILDDYNATTLIB, test x"$have_dyninst" = "xyes" -a x"$LDSHFLAG" != "x")
AM_CONDITIONAL(AMHAVELIBERTY, test x"$have_liberty" = "xyes")
# Check for MPI and OpenMP
check_omp="yes"; build_omp="yes"; force_omp="no"
check_mpi="yes"; build_mpi="yes"; build_fmpi="no"; force_mpi="no"
build_hyb="yes"
AC_ARG_ENABLE(mpi,
AC_HELP_STRING([--enable-mpi], [enable MPI support, default: enable if MPI-installation found by configure]),
[
AS_IF([test x"$enableval" = "xyes"],
[force_mpi="yes"], [check_mpi="no"; build_mpi="no"])
], [])
AC_ARG_ENABLE(omp,
AC_HELP_STRING([--enable-omp], [enable OpenMP support, default: enable if given compiler supports OpenMP]),
[
AS_IF([test x"$enableval" = "xyes"],
[force_omp="yes"], [check_omp="no"; build_omp="no"])
], [])
AC_ARG_ENABLE(hyb,
AC_HELP_STRING([--enable-hyb], [enable Hybrid (MPI/OpenMP) support, default: enable if MPI-installation found and given compiler supports OpenMP]),
[
AS_IF([test x"$enableval" = "xyes"],
[check_omp="yes"; force_omp="yes"
check_mpi="yes"; force_mpi="yes"],
[build_hyb="no"])
], [check_omp="yes"; check_mpi="yes"])
ACVT_CONF_TITLE([Message Passing Interface (MPI)])
AS_IF([test x"$check_mpi" = "xyes"],
[
ACVT_MPI
AS_IF([test x"$mpi_error" = "xyes"],
[
AS_IF([test x"$force_mpi" = "xyes"], [exit 1])
build_mpi="no"; build_fmpi="no"; build_hyb="no"
])
],
[
AS_IF([test x"$enable_config_titles" = "xyes"],
[AC_MSG_NOTICE([disabled via command line switch])])
])
AS_IF([test x"$MPICC" = x], [MPICC=$CC])
ACVT_CONF_TITLE([OpenMP parallelizer])
AS_IF([test x"$check_omp" = "xyes"],
[
ACVT_OMP
AS_IF([test x"$omp_error" = "xyes"],
[
AS_IF([test x"$force_omp" = "xyes"], [exit 1])
build_omp="no"; build_hyb="no"
])
],
[
AS_IF([test x"$enable_config_titles" = "xyes"],
[AC_MSG_NOTICE([disabled via command line switch])])
])
AM_CONDITIONAL(AMBUILDMPI, test x"$build_mpi" = "xyes")
AM_CONDITIONAL(AMBUILDFMPI, test x"$build_fmpi" = "xyes")
AM_CONDITIONAL(AMHAVEOMP, test x"$have_omp" = "xyes")
AM_CONDITIONAL(AMBUILDOMP, test x"$build_omp" = "xyes")
AM_CONDITIONAL(AMBUILDHYB, test x"$build_hyb" = "xyes")
ACVT_CONF_TITLE([Additional tracing support])
# Check for memory tracing support
ACVT_CONF_SUBTITLE([GLIBC's memory allocation tracing])
ACVT_MEMHOOKS
AS_IF([test x"$enable_config_titles" = "xyes" -a x"$check_memhooks" = "xno"],
[AC_MSG_NOTICE([disabled via command line switch])])
AS_IF([test x"$force_memhooks" = "xyes" -a x"$memhooks_error" = "xyes"], [exit 1])
AM_CONDITIONAL(AMHAVEMEMHOOKS, test x"$have_memhooks" = "xyes")
# Check for I/O tracing support
ACVT_CONF_SUBTITLE([LIBC's I/O tracing])
AS_IF([test x"$PLATFORM" = "xmacos"],
[
AC_MSG_NOTICE([not supported on MacOS])
have_iowrap="no"
],
[
ACVT_IOWRAP
AS_IF([test x"$force_iowrap" = "xyes" -a x"$iowrap_error" = "xyes"], [exit 1])
AS_IF([test x"$enable_config_titles" = "xyes" -a x"$check_iowrap" = "xno"],
[AC_MSG_NOTICE([disabled via command line switch])])
])
AM_CONDITIONAL(AMBUILDIOWRAP, test x"$have_iowrap" = "xyes")
# Check for PAPI hardware counter support
ACVT_CONF_SUBTITLE([PAPI hardware counter])
AS_IF([test x"$PLATFORM" = "xnecsx"],
[
AC_MSG_NOTICE([not supported on NEC SX])
have_papi="no"
],
[
ACVT_PAPI
AS_IF([test x"$force_papi" = "xyes" -a x"$papi_error" = "xyes"], [exit 1])
AS_IF([test x"$enable_config_titles" = "xyes" -a x"$check_papi" = "xno"],
[AC_MSG_NOTICE([disabled via command line switch])])
])
AM_CONDITIONAL(AMHAVEPAPI, test x"$have_papi" = "xyes")
# Check path for node-local temporary directory
ACVT_LTMPDIR
# Setup compiler wrappers
ACVT_COMPWRAP
# Output files
AC_CONFIG_FILES([Makefile
extlib/Makefile
vtlib/Makefile
tools/Makefile
tools/compwrap/Makefile
tools/compwrap/vtcc-wrapper-data.txt
tools/compwrap/vtcxx-wrapper-data.txt
tools/compwrap/vtf77-wrapper-data.txt
tools/compwrap/vtf90-wrapper-data.txt
tools/opari/Makefile
tools/opari/tool/Makefile
tools/opari/doc/Makefile
tools/vtdyn/Makefile
tools/vtdyn/dynattlib/Makefile
tools/vtfilter/Makefile
tools/vtunify/Makefile
doc/Makefile
])
# Create output files
ACVT_CONF_TITLE([Final output])
AC_OUTPUT
# Show configure summary
ACVT_CONF_SUMMARY

584
ompi/contrib/vt/vt/depcomp Исполняемый файл
Просмотреть файл

@ -0,0 +1,584 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
scriptversion=2006-10-15.18
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 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, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
case $1 in
'')
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
Run PROGRAMS ARGS to compile a file, generating dependencies
as side-effects.
Environment variables:
depmode Dependency tracking mode.
source Source file read by `PROGRAMS ARGS'.
object Object file output by `PROGRAMS ARGS'.
DEPDIR directory where to store dependencies.
depfile Dependency file to output.
tmpdepfile Temporary file to use when outputing dependencies.
libtool Whether libtool is used (yes/no).
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "depcomp $scriptversion"
exit $?
;;
esac
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
exit 1
fi
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
depfile=${depfile-`echo "$object" |
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile"
# Some modes work just like other modes, but use different flags. We
# parameterize here, but still list the modes in the big case below,
# to make depend.m4 easier to write. Note that we *cannot* use a case
# here, because this file can only contain one case statement.
if test "$depmode" = hp; then
# HP compiler uses -M and no extra arg.
gccflag=-M
depmode=gcc
fi
if test "$depmode" = dashXmstdout; then
# This is just like dashmstdout with a different argument.
dashmflag=-xM
depmode=dashmstdout
fi
case "$depmode" in
gcc3)
## gcc 3 implements dependency tracking that does exactly what
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
## it if -MD -MP comes after the -MF stuff. Hmm.
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
## the command line argument order; so add the flags where they
## appear in depend2.am. Note that the slowdown incurred here
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
for arg
do
case $arg in
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
*) set fnord "$@" "$arg" ;;
esac
shift # fnord
shift # $arg
done
"$@"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
mv "$tmpdepfile" "$depfile"
;;
gcc)
## There are various ways to get dependency output from gcc. Here's
## why we pick this rather obscure method:
## - Don't want to use -MD because we'd like the dependencies to end
## up in a subdir. Having to rename by hand is ugly.
## (We might end up doing this anyway to support other compilers.)
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
## -MM, not -M (despite what the docs say).
## - Using -M directly means running the compiler twice (even worse
## than renaming).
if test -z "$gccflag"; then
gccflag=-MD,
fi
"$@" -Wp,"$gccflag$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
## The second -e expression handles DOS-style file names with drive letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
## This next piece of magic avoids the `deleted header file' problem.
## The problem is that when a header file which appears in a .P file
## is deleted, the dependency causes make to die (because there is
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
tr ' ' '
' < "$tmpdepfile" |
## Some versions of gcc put a space before the `:'. On the theory
## that the space means something, we add a space to the output as
## well.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
sgi)
if test "$libtool" = yes; then
"$@" "-Wp,-MDupdate,$tmpdepfile"
else
"$@" -MDupdate "$tmpdepfile"
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
echo "$object : \\" > "$depfile"
# Clip off the initial element (the dependent). Don't try to be
# clever and replace this with sed code, as IRIX sed won't handle
# lines with more than a fixed number of characters (4096 in
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
# the IRIX cc adds comments like `#:fec' to the end of the
# dependency line.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
tr '
' ' ' >> $depfile
echo >> $depfile
# The second pass generates a dummy entry for each header file.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
>> $depfile
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
# in a .u file. In older versions, this file always lives in the
# current directory. Also, the AIX compiler puts `$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
tmpdepfile="$stripped.u"
if test "$libtool" = yes; then
"$@" -Wc,-M
else
"$@" -M
fi
stat=$?
if test -f "$tmpdepfile"; then :
else
stripped=`echo "$stripped" | sed 's,^.*/,,'`
tmpdepfile="$stripped.u"
fi
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
if test -f "$tmpdepfile"; then
outname="$stripped.o"
# Each line is of the form `foo.o: dependent.h'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
icc)
# Intel's C compiler understands `-MD -MF file'. However on
# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
# ICC 7.0 will fill foo.d with something like
# foo.o: sub/foo.c
# foo.o: sub/foo.h
# which is wrong. We want:
# sub/foo.o: sub/foo.c
# sub/foo.o: sub/foo.h
# sub/foo.c:
# sub/foo.h:
# ICC 7.1 will output
# foo.o: sub/foo.c sub/foo.h
# and will wrap long lines using \ :
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
"$@" -MD -MF "$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
# Each line is of the form `foo.o: dependent.h',
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process this invocation
# correctly. Breaking it into two sed invocations is a workaround.
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp2)
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
# compilers, which have integrated preprocessors. The correct option
# to use with these is +Maked; it writes dependencies to a file named
# 'foo.d', which lands next to the object file, wherever that
# happens to be.
# Much of this is similar to the tru64 case; see comments there.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir.libs/$base.d
"$@" -Wc,+Maked
else
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir$base.d
"$@" +Maked
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
# Add `dependent.h:' lines.
sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile" "$tmpdepfile2"
;;
tru64)
# The Tru64 compiler uses -MD to generate dependencies as a side
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
# dependencies in `foo.d' instead, so we check for that too.
# Subdirectories are respected.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
# With Tru64 cc, shared objects can also be used to make a
# static library. This mechanism is used in libtool 1.4 series to
# handle both shared and static libraries in a single compilation.
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
#
# With libtool 1.5 this exception was removed, and libtool now
# generates 2 separate objects for the 2 libraries. These two
# compilations output dependencies in $dir.libs/$base.o.d and
# in $dir$base.o.d. We have to check for both files, because
# one of the two compilations can be disabled. We should prefer
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
# automatically cleaned when .libs/ is deleted, while ignoring
# the former would cause a distcleancheck panic.
tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
tmpdepfile2=$dir$base.o.d # libtool 1.5
tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
"$@" -Wc,-MD
else
tmpdepfile1=$dir$base.o.d
tmpdepfile2=$dir$base.d
tmpdepfile3=$dir$base.d
tmpdepfile4=$dir$base.d
"$@" -MD
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
# That's a tab and a space in the [].
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
#nosideeffect)
# This comment above is used by automake to tell side-effect
# dependency tracking mechanisms from slower ones.
dashmstdout)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout, regardless of -o.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test $1 != '--mode=compile'; do
shift
done
shift
fi
# Remove `-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
test -z "$dashmflag" && dashmflag=-M
# Require at least two characters before searching for `:'
# in the target name. This is to cope with DOS-style filenames:
# a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
"$@" $dashmflag |
sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
tr ' ' '
' < "$tmpdepfile" | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
dashXmstdout)
# This case only exists to satisfy depend.m4. It is never actually
# run, as this mode is specially recognized in the preamble.
exit 1
;;
makedepend)
"$@" || exit $?
# Remove any Libtool call
if test "$libtool" = yes; then
while test $1 != '--mode=compile'; do
shift
done
shift
fi
# X makedepend
shift
cleared=no
for arg in "$@"; do
case $cleared in
no)
set ""; shift
cleared=yes ;;
esac
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.
-*|$object)
;;
*)
set fnord "$@" "$arg"; shift ;;
esac
done
obj_suffix="`echo $object | sed 's/^.*\././'`"
touch "$tmpdepfile"
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
sed '1,2d' "$tmpdepfile" | tr ' ' '
' | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile" "$tmpdepfile".bak
;;
cpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test $1 != '--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, regardless of -o,
# because we must use -o when running libtool.
"$@" || exit $?
IFS=" "
for arg
do
case "$arg" in
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
set fnord "$@"
shift
shift
;;
*)
set fnord "$@" "$arg"
shift
shift
;;
esac
done
"$@" -E |
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
echo " " >> "$depfile"
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
rm -f "$tmpdepfile"
;;
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-end: "$"
# End:

20
ompi/contrib/vt/vt/doc/FILTER.SPEC Обычный файл
Просмотреть файл

@ -0,0 +1,20 @@
# VampirTrace region filter specification
#
# call limit definitions and region assignments
#
# syntax: <regions> -- <limit>
#
# regions semicolon-seperated list of regions
# (can be wildcards)
# limit assigned call limit
# 0 = region(s) denied
# -1 = unlimited
#
# example:
#
# add;sub;mul;div -- 1000
# * -- 3000000
#
# These region filter directives cause that the functions "add", "sub",
# "mul" and "div" be recorded at most 1000 times. The remaining
# functions (*) will be recorded at most 3000000 times.

18
ompi/contrib/vt/vt/doc/GROUPS.SPEC Обычный файл
Просмотреть файл

@ -0,0 +1,18 @@
# VampirTrace region groups specification
#
# group definitions and region assignments
#
# syntax: <group>=<regions>
#
# group group name
# regions semicolon-seperated list of regions
# (can be wildcards)
#
# example:
#
# CALC=add;sub;mul;div
# USER=app_*
#
# These group assignments make the functions "add", "sub", "mul" and "div"
# associated with group "CALC" and all functions with the prefix "app_" are
# associated with group "USER".

32
ompi/contrib/vt/vt/doc/LICENSE Обычный файл
Просмотреть файл

@ -0,0 +1,32 @@
Copyright (c) 2005-2007, ZIH, TU Dresden, Federal Republic of Germany
Copyright (c) 1998-2005, Forschungszentrum Juelich GmbH, 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 or Forschungszentrum Juelich GmbH, 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.

324
ompi/contrib/vt/vt/doc/METRICS.SPEC Обычный файл
Просмотреть файл

@ -0,0 +1,324 @@
# VampirTrace metrics specification
#
# measurement definitions complement/extend native (and PAPI preset) definitions
# measured metrics derive from a single measured counter (in principle)
# all measure definitions are considered equivalent
# (though some may be platform-specific)
### generic (PAPI) measurement aliases
### level 1 cache accesses
measure L1_ACCESS = PAPI_L1_TCA
measure L1_I_ACCESS = PAPI_L1_ICA
measure L1_D_ACCESS = PAPI_L1_DCA
### level 1 cache reads
measure L1_READ = PAPI_L1_TCR
measure L1_I_READ = PAPI_L1_ICR # equivalent to PAPI_L1_ICA
measure L1_D_READ = PAPI_L1_DCR
### level 1 cache writes
measure L1_WRITE = PAPI_L1_TCW
measure L1_I_WRITE = PAPI_L1_ICW # never defined
measure L1_D_WRITE = PAPI_L1_DCW
### level 1 cache hits
measure L1_HIT = PAPI_L1_TCH
measure L1_I_HIT = PAPI_L1_ICH
measure L1_D_HIT = PAPI_L1_DCH
### level 1 cache misses
measure L1_MISS = PAPI_L1_TCM
measure L1_I_MISS = PAPI_L1_ICM
measure L1_D_MISS = PAPI_L1_DCM
measure L1_D_READ_MISS = PAPI_L1_LDM
measure L1_D_WRITE_MISS = PAPI_L1_STM
### alternate level 1 cache representation
measure L1_INST = PAPI_L1_ICA
measure L1_INST_HIT = PAPI_L1_ICH
measure L1_INST_MISS = PAPI_L1_ICM
measure L1_LOAD = PAPI_L1_DCR
measure L1_LOAD_HIT = PAPI_L1_LDH # non-standard
measure L1_LOAD_MISS = PAPI_L1_LDM
measure L1_STORE = PAPI_L1_DCW
measure L1_STORE_HIT = PAPI_L1_STH # non-standard
measure L1_STORE_MISS = PAPI_L1_STM
### level 2 cache accesses
measure L2_ACCESS = PAPI_L2_TCA
measure L2_I_ACCESS = PAPI_L2_ICA
measure L2_D_ACCESS = PAPI_L2_DCA
### level 2 cache reads
measure L2_READ = PAPI_L2_TCR
measure L2_I_READ = PAPI_L2_ICR # equivalent to PAPI_L2_ICA
measure L2_D_READ = PAPI_L2_DCR
### level 2 cache writes
measure L2_WRITE = PAPI_L2_TCW
measure L2_I_WRITE = PAPI_L2_ICW # never defined
measure L2_D_WRITE = PAPI_L2_DCW
### level 2 cache hits
measure L2_HIT = PAPI_L2_TCH
measure L2_I_HIT = PAPI_L2_ICH
measure L2_D_HIT = PAPI_L2_DCH
### level 2 cache misses
measure L2_MISS = PAPI_L2_TCM
measure L2_I_MISS = PAPI_L2_ICM
measure L2_D_MISS = PAPI_L2_DCM
measure L2_D_READ_MISS = PAPI_L2_LDM
measure L2_D_WRITE_MISS = PAPI_L2_STM
### alternate level 2 cache representation
measure L2_INST = PAPI_L2_ICA
measure L2_INST_HIT = PAPI_L2_ICH
measure L2_INST_MISS = PAPI_L2_ICM
measure L2_LOAD = PAPI_L2_DCR
measure L2_LOAD_HIT = PAPI_L2_LDH # non-standard
measure L2_LOAD_MISS = PAPI_L2_LDM
measure L2_STORE = PAPI_L2_DCW
measure L2_STORE_HIT = PAPI_L2_STH # non-standard
measure L2_STORE_MISS = PAPI_L2_STM
### level 3 cache accesses
measure L3_ACCESS = PAPI_L3_TCA
measure L3_I_ACCESS = PAPI_L3_ICA
measure L3_D_ACCESS = PAPI_L3_DCA
### level 3 cache reads
measure L3_READ = PAPI_L3_TCR
measure L3_I_READ = PAPI_L3_ICR # equivalent to PAPI_L3_ICA
measure L3_D_READ = PAPI_L3_DCR
### level 3 cache writes
measure L3_WRITE = PAPI_L3_TCW
measure L3_I_WRITE = PAPI_L3_ICW # never defined
measure L3_D_WRITE = PAPI_L3_DCW
### level 3 cache hits
measure L3_HIT = PAPI_L3_TCH
measure L3_I_HIT = PAPI_L3_ICH
measure L3_D_HIT = PAPI_L3_DCH
### level 3 cache misses
measure L3_MISS = PAPI_L3_TCM
measure L3_I_MISS = PAPI_L3_ICM
measure L3_D_MISS = PAPI_L3_DCM
measure L3_D_READ_MISS = PAPI_L3_LDM
measure L3_D_WRITE_MISS = PAPI_L3_STM
### alternate level 3 cache representation
measure L3_INST = PAPI_L3_ICA
measure L3_INST_HIT = PAPI_L3_ICH
measure L3_INST_MISS = PAPI_L3_ICM
measure L3_LOAD = PAPI_L3_DCR
measure L3_LOAD_HIT = PAPI_L3_LDH # non-standard
measure L3_LOAD_MISS = PAPI_L3_LDM
measure L3_STORE = PAPI_L3_DCW
measure L3_STORE_HIT = PAPI_L3_STH # non-standard
measure L3_STORE_MISS = PAPI_L3_STM
### TLB misses
measure TLB_MISS = PAPI_TLB_TL
measure TLB_I_MISS = PAPI_TLB_IM
measure TLB_D_MISS = PAPI_TLB_DM
### instructions
measure INSTRUCTION = PAPI_TOT_INS
measure INTEGER = PAPI_INT_INS
measure FLOATING_POINT = PAPI_FP_INS
measure FP_ADD = PAPI_FAD_INS
measure FP_MUL = PAPI_FML_INS
measure FP_FMA = PAPI_FMA_INS
measure FP_DIV = PAPI_FDV_INS
measure FP_INV = PAPI_FNV_INS
measure FP_SQRT = PAPI_FSQ_INS
measure VECTOR = PAPI_VEC_INS
measure SYNCH = PAPI_SYC_INS
measure LOAD_STORE = PAPI_LST_INS
measure LOAD = PAPI_LD_INS
measure STORE = PAPI_SR_INS
measure COND_STORE = PAPI_CSR_TOT
measure COND_STORE_SUCCESS = PAPI_CSR_SUC
measure COND_STORE_UNSUCCESS = PAPI_CSR_FAL
measure BRANCH = PAPI_BR_INS
measure UNCOND_BRANCH = PAPI_BR_UCN
measure COND_BRANCH = PAPI_BR_CN
measure COND_BRANCH_TAKEN = PAPI_BR_TKN
measure COND_BRANCH_NOTTAKEN = PAPI_BR_NTK
measure COND_BRANCH_PRED = PAPI_BR_PRC
measure COND_BRANCH_MISPRED = PAPI_BR_MSP
### cycles
measure CYCLES = PAPI_TOT_CYC
### idle units
measure INTEGER_UNIT_IDLE = PAPI_FXU_IDL
measure FLOAT_UNIT_IDLE = PAPI_FPU_IDL
measure BRANCH_UNIT_IDLE = PAPI_BRU_IDL
measure LOADSTORE_UNIT_IDLE = PAPI_LSU_IDL
### stalls
measure STALL_MEMORY_ACCESS = PAPI_MEM_SCY
measure STALL_MEMORY_READ = PAPI_MEM_RCY
measure STALL_MEMORY_WRITE = PAPI_MEM_WCY
measure STALL_INST_ISSUE = PAPI_STL_ICY
# platform-specific measurement aliases
# (complement or redefine generic measurement aliases)
# may need to key to particular platform if ambiguity
### POWER4-specific metrics
measure FP_LOAD = PM_LSU_LDF
measure FP_STORE = PM_FPU_STF
measure FP_MISC = PM_FPU_FMOV_FEST
### UltraSPARC-III/IV-specific metrics
measure STALL_L1_MISS = Re_DC_miss # /1
measure STALL_L2_MISS = Re_EC_miss # /1
measure STALL_IC_MISS = Dispatch0_IC_miss # /0
measure STALL_STOREQ = Rstall_storeQ # /0
measure STALL_IU_USE = Rstall_IU_use # /0
measure STALL_FP_USE = Rstall_FP_use # /1
measure STALL_PC_MISS = Re_PC_miss # /1
measure STALL_RAW_MISS = Re_RAW_miss # /1
measure STALL_FPU_BYPASS = Re_FPU_bypass # /1
measure STALL_MISPRED = Dispatch0_mispred # /1
measure STALL_BR_TARGET = Dispatch0_br_target # /0
measure STALL_2ND_BR = Dispatch0_2nd_br # /0
measure STALL_L1_MSOVHD = Re_DC_missovhd # /1
### groupings of metrics for collective measurement
### Opteron groupings (max 4 in group, unrestricted)
aggroup OPTERON_DC1 = DC_ACCESS DC_MISS DC_L2_REFILL_I DC_SYS_REFILL_I
aggroup OPTERON_DC2 = DC_L2_REFILL_M DC_L2_REFILL_O DC_L2_REFILL_E DC_L2_REFILL_S
aggroup OPTERON_DC3 = DC_SYS_REFILL_M DC_SYS_REFILL_O DC_SYS_REFILL_E DC_SYS_REFILL_S
aggroup OPTERON_IC = IC_FETCH IC_MISS IC_L2_REFILL IC_SYS_REFILL
aggroup OPTERON_TLB = DC_L1_DTLB_MISS_AND_L2_DTLB_MISS DC_L1_DTLB_MISS_AND_L2_DTLB_HIT IC_L1ITLB_MISS_AND_L2ITLB_MISS IC_L1ITLB_MISS_AND_L2ITLB_HIT
aggroup OPTERON_BR = FR_BR FR_BR_MIS FR_BR_TAKEN FR_BR_TAKEN_MIS
aggroup OPTERON_FP = FP_ADD_PIPE FP_MULT_PIPE FP_ST_PIPE FP_FAST_FLAG
aggroup OPTERON_FPU = FR_FPU_X87 FR_FPU_MMX_3D FR_FPU_SSE_SSE2_PACKED FR_FPU_SSE_SSE2_SCALAR
aggroup OPTERON_ST1 = IC_FETCH_STALL FR_DECODER_EMPTY FR_DISPATCH_STALLS FR_DISPATCH_STALLS_FULL_FPU
aggroup OPTERON_ST2 = FR_DISPATCH_STALLS_FULL_LS FR_DISPATCH_STALLS_FULL_REORDER FR_DISPATCH_STALLS_FULL_RESERVATION FR_DISPATCH_STALLS_BR
aggroup OPTERON_ST3 = FR_DISPATCH_STALLS_FAR FR_DISPATCH_STALLS_SER FR_DISPATCH_STALLS_SEG FR_DISPATCH_STALLS_QUIET
aggroup OPTERON_ETC = FR_X86_INS CPU_CLK_UNHALTED FR_HW_INTS FP_NONE_RET
aggroup OPTERON_HTM = HT_LL_MEM_XFR HT_LR_MEM_XFR HT_RL_MEM_XFR
aggroup OPTERON_HTI = HT_LL_IO_XFR HT_LR_IO_XFR HT_RL_IO_XFR
### POWER4-specific groupings (max 8 in group, restricted)
aggroup POWER4_DC = PM_DATA_FROM_L2 PM_DATA_FROM_L25_SHR PM_DATA_FROM_L25_MOD PM_DATA_FROM_L275_SHR PM_DATA_FROM_L275_MOD PM_DATA_FROM_L3 PM_DATA_FROM_L35 PM_DATA_FROM_MEM # 5
aggroup POWER4_IC = PM_INST_FROM_PREF PM_INST_FROM_L1 PM_INST_FROM_L2 PM_INST_FROM_L25_L275 PM_INST_FROM_L3 PM_INST_FROM_L35 PM_INST_FROM_MEM # 6
aggroup POWER4_L1 = PM_LD_REF_L1 PM_LD_MISS_L1 PM_ST_REF_L1 PM_ST_MISS_L1 # 56
aggroup POWER4_TLB = PM_ITLB_MISS PM_DTLB_MISS
aggroup POWER4_LX = PM_ITLB_MISS PM_DTLB_MISS PM_LD_REF_L1 PM_LD_MISS_L1 PM_ST_REF_L1 PM_ST_MISS_L1 # 56
aggroup POWER4_BR = PM_BR_ISSUED PM_BR_MPRED_CR PM_BR_MPRED_TA # 3,55,61
aggroup POWER4_BRT = PM_BR_ISSUED PM_BR_MPRED_CR PM_BR_MPRED_TA PM_BIQ_IDU_FULL_CYC PM_BRQ_FULL_CYC PM_L1_WRITE_CYC PM_INST_CMPL PM_CYC # 55
aggroup POWER4_LSF = PM_FPU_STF PM_LSU_LDF # 15,54,60
aggroup POWER4_STL = PM_CYC PM_FPU_FULL_CYC PM_FPU_STALL3 # 54
aggroup POWER4_LST = PM_INST_CMPL PM_FPU_STF PM_LSU_LDF PM_CYC PM_FPU_FULL_CYC PM_FPU_STALL3 # 54
aggroup POWER4_FP = PM_FPU_FIN PM_FPU_FMA PM_FPU_FDIV PM_FPU_FSQRT PM_FPU_FMOV_FEST # 53
aggroup POWER4_IFP = PM_FPU_FIN PM_FPU_FMA PM_FPU_FDIV PM_FPU_FSQRT PM_FPU_FMOV_FEST PM_FXU_FIN # 53
aggroup POWER4_II = PM_INST_DISP PM_INST_CMPL # 1,2,18,20
### MIPS-R1200 groupings (max 32 in group, unrestricted)
aggroup R12000_ALL = TLB_misses primary_data_cache_misses secondary_data_cache_misses primary_instruction_cache_misses secondary_instruction_cache_misses graduated_instructions mispredicted_branches graduated_loads graduated_stores graduated_floating-point_instructions decoded_instructions cycles prefetch_primary_data_cache_misses
aggroup R12000_ALL_PAPI = PAPI_L1_DCM PAPI_L1_ICM PAPI_L2_DCM PAPI_L2_ICM PAPI_TLB_TL PAPI_TOT_INS PAPI_FP_INS PAPI_LD_INS PAPI_SR_INS PAPI_TOT_IIS PAPI_BR_CN PAPI_BR_MSP PAPI_CSR_TOT PAPI_CSR_FAL PAPI_TOT_CYC PAPI_PRF_DM PAPI_CA_INV PAPI_CA_ITV
### UltraSPARC-III/IV groupings (max 2 in group, restricted)
aggroup US3_CPI = Cycle_cnt Instr_cnt # duplicates
# cycles/stalls groups
aggroup US3_SMP = Dispatch_rs_mispred Dispatch0_mispred # stall misprediction
aggroup US3_SUS = Rstall_IU_use Rstall_FP_use # stall IU/FP use
aggroup US3_SST = Rstall_storeQ Re_RAW_miss # stall store
aggroup US3_SCD = Cycle_cnt Re_DC_miss
aggroup US3_SCO = Dispatch0_br_target Re_DC_missovhd
aggroup US3_SCE = Dispatch0_2nd_br Re_EC_miss
aggroup US3_SCP = Dispatch0_IC_miss Re_PC_miss
aggroup US3_SCX = SI_ciq_flow Re_FPU_bypass # Re_FPU_bypass always zero?
# instruction and TLB groups
aggroup US3_FPU = FA_pipe_completion FM_pipe_completion
aggroup US3_BMS = IU_Stat_Br_miss_taken IU_Stat_Br_miss_untaken
aggroup US3_BCS = IU_Stat_Br_count_taken IU_Stat_Br_count_untaken
aggroup US3_ITL = Instr_cnt ITLB_miss
aggroup US3_DTL = Cycle_cnt DTLB_miss
# memory and cache groups
aggroup US3_ICH = IC_ref IC_miss
aggroup US3_DCR = DC_rd DC_rd_miss
aggroup US3_DCW = DC_wr DC_wr_miss
aggroup US3_ECI = EC_write_hit_RTO EC_ic_miss
aggroup US3_ECM = EC_rd_miss EC_misses
# locality/SSM and other miscellaneous groups
aggroup US3_ECL = EC_miss_local EC_miss_remote # only SF15000/SF25000
aggroup US3_ECX = EC_wb_remote EC_miss_mtag_remote # only SF15000/SF25000
aggroup US3_ECW = EC_ref EC_wb
aggroup US3_ECS = EC_snoop_inv EC_snoop_cb
aggroup US3_PCR = PC_port0_rd PC_port1_rd
aggroup US3_ETC = SI_snoop PC_MS_misses
aggroup US3_WCM = SI_owned WC_miss
# memory controller groups
aggroup US3_SM1 = MC_stalls_0 MC_stalls_1
aggroup US3_SM2 = MC_stalls_2 MC_stalls_3
aggroup US3_MC0 = MC_reads_0 MC_writes_0
aggroup US3_MC1 = MC_reads_1 MC_writes_1
aggroup US3_MC2 = MC_reads_2 MC_writes_2
aggroup US3_MC3 = MC_reads_3 MC_writes_3
### Itanium2 groupings (max 4 in group, partially restricted)
aggroup ITANIUM2_TLB = ITLB_MISSES_FETCH_L1ITLB ITLB_MISSES_FETCH_L2ITLB L2DTLB_MISSES L1DTLB_TRANSFER
aggroup ITANIUM2_BR = BRANCH_EVENT BR_MISPRED_DETAIL_ALL_CORRECT_PRED BR_MISPRED_DETAIL_ALL_WRONG_PATH BR_MISPRED_DETAIL_ALL_WRONG_TARGET
aggroup ITANIUM2_STL = DISP_STALLED BACK_END_BUBBLE_ALL BE_EXE_BUBBLE_ALL BE_EXE_BUBBLE_FRALL
aggroup ITANIUM2_L1D = DATA_REFERENCES_SET1 L1D_READS_SET1 L1D_READ_MISSES_ALL L2_DATA_REFERENCES_L2_ALL
aggroup ITANIUM2_L2D = L2_DATA_REFERENCES_L2_DATA_READS L2_DATA_REFERENCES_L2_DATA_WRITES L3_READS_DATA_READ_ALL L3_WRITES_DATA_WRITE_ALL
aggroup ITANIUM2_L3D = L3_READS_DATA_READ_HIT L3_READS_DATA_READ_MISS L3_WRITES_DATA_WRITE_HIT L3_WRITES_DATA_WRITE_MISS
aggroup ITANIUM2_LXD = L2_MISSES L3_REFERENCES L3_READS_ALL_MISS L3_WRITES_ALL_MISS
aggroup ITANIUM2_LXX = L3_MISSES L3_WRITES_L2_WB_HIT L3_WRITES_L2_WB_MISS
aggroup ITANIUM2_ICD = L1I_READS L2_INST_DEMAND_READS L3_READS_DINST_FETCH_HIT L3_READS_DINST_FETCH_MISS # instruction cache (demand-load only)
aggroup ITANIUM2_ICP = L1I_PREFETCHES L2_INST_PREFETCHES L3_READS_INST_FETCH_HIT L3_READS_INST_FETCH_MISS # instruction cache (incl. prefetch)
aggroup ITANIUM2_IN1 = INST_DISPERSED IA32_INST_RETIRED IA64_INST_RETIRED LOADS_RETIRED
aggroup ITANIUM2_IN2 = FP_OPS_RETIRED LOADS_RETIRED CPU_CYCLES ISA_TRANSITIONS
aggroup ITANIUM2_ISA = IA32_INST_RETIRED IA64_INST_RETIRED IA32_ISA_TRANSITIONS STORES_RETIRED
aggroup ITANIUM2_FLP = CPU_CYCLES FP_OPS_RETIRED INST_DISPERSED LOADS_RETIRED
### compositions are derived by combining measurements and create hierarchies
### **** generic hierarchy ****
### cycles (including stalls)
compose CYCLES = BUSY + STALL + IDLE
compose STALL = DISPATCH + UNIT_USE + RECIRCULATE
### instructions
compose INSTRUCTION = BRANCH + INTEGER + FLOATING_POINT + MEMORY
compose BRANCH = BRANCH_PRED + BRANCH_MISP
compose FLOATING_POINT = FP_ADD + FP_MUL + FP_FMA + FP_DIV + FP_INV + FP_SQRT + FP_MISC
compose MEMORY = LOAD + STORE + SYNCH
### data accesses (to cache hierarchy & memory)
compose DATA_ACCESS = DATA_HIT_L1$ + DATA_HIT_L2$ + DATA_HIT_L3$ + DATA_HIT_MEM
compose DATA_HIT_L1$ = DATA_STORE_INTO_L1$ + DATA_LOAD_FROM_L1$
compose DATA_HIT_L2$ = DATA_STORE_INTO_L2$ + DATA_LOAD_FROM_L2$
compose DATA_HIT_L3$ = DATA_STORE_INTO_L3$ + DATA_LOAD_FROM_L3$
compose DATA_HIT_MEM = DATA_STORE_INTO_MEM + DATA_LOAD_FROM_MEM
### instruction accesses (to cache hierarchy & memory)
compose INST_ACCESS = INST_HIT_PREF + INST_HIT_L1$ + INST_HIT_L2$ + INST_HIT_L3$ + INST_HIT_MEM
### TLB accesses (instruction & data)
compose TLB_ACCESS = DATA_TLB_ACCESS + INST_TLB_ACCESS
compose DATA_TLB_ACCESS = DATA_TLB_HIT + DATA_TLB_MISS
compose INST_TLB_ACCESS = INST_TLB_HIT + INST_TLB_MISS

22
ompi/contrib/vt/vt/doc/Makefile.am Обычный файл
Просмотреть файл

@ -0,0 +1,22 @@
vtdata_DATA = \
FILTER.SPEC \
GROUPS.SPEC \
METRICS.SPEC
vtdoc_DATA = \
$(top_srcdir)/ChangeLog \
\
LICENSE \
UserManual.html \
UserManual.pdf
vtdatadir = $(datadir)
vtdocdir = $(docdir)
LICENSE: $(top_srcdir)/COPYING
cp $(top_srcdir)/COPYING LICENSE
EXTRA_DIST = \
$(vtdata_DATA) \
$(vtdoc_DATA)

435
ompi/contrib/vt/vt/doc/Makefile.in Обычный файл
Просмотреть файл

@ -0,0 +1,435 @@
# Makefile.in generated by automake 1.10 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006 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@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@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
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
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 = `echo $$p | sed -e 's|^.*/||'`;
am__installdirs = "$(DESTDIR)$(vtdatadir)" "$(DESTDIR)$(vtdocdir)"
vtdataDATA_INSTALL = $(INSTALL_DATA)
vtdocDATA_INSTALL = $(INSTALL_DATA)
DATA = $(vtdata_DATA) $(vtdoc_DATA)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BFDINCDIR = @BFDINCDIR@
BFDLIB = @BFDLIB@
BFDLIBDIR = @BFDLIBDIR@
CC = @CC@
CCAS = @CCAS@
CCASDEPMODE = @CCASDEPMODE@
CCASFLAGS = @CCASFLAGS@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXCPP_FOR_BUILD = @CXXCPP_FOR_BUILD@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@
CXX_FOR_BUILD = @CXX_FOR_BUILD@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLINCDIR = @DLINCDIR@
DLLIB = @DLLIB@
DLLIBDIR = @DLLIBDIR@
DYNIINCDIR = @DYNIINCDIR@
DYNILIB = @DYNILIB@
DYNILIBDIR = @DYNILIBDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
F77 = @F77@
FC = @FC@
FCFLAGS = @FCFLAGS@
FFLAGS = @FFLAGS@
FMPILIB = @FMPILIB@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@
LDSHFLAG = @LDSHFLAG@
LIBERTYINCDIR = @LIBERTYINCDIR@
LIBERTYLIB = @LIBERTYLIB@
LIBERTYLIBDIR = @LIBERTYLIBDIR@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBS_FOR_BUILD = @LIBS_FOR_BUILD@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
MPICC = @MPICC@
MPICFLAGS = @MPICFLAGS@
MPIDIR = @MPIDIR@
MPIINCDIR = @MPIINCDIR@
MPILIB = @MPILIB@
MPILIBDIR = @MPILIBDIR@
OBJEXT = @OBJEXT@
OMPFLAG = @OMPFLAG@
OTFDIR = @OTFDIR@
OTFINCDIR = @OTFINCDIR@
OTFLIB = @OTFLIB@
OTFLIBDIR = @OTFLIBDIR@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PAPIINCDIR = @PAPIINCDIR@
PAPILIB = @PAPILIB@
PAPILIBDIR = @PAPILIBDIR@
PATH_SEPARATOR = @PATH_SEPARATOR@
PLATFORM = @PLATFORM@
PMPILIB = @PMPILIB@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
VTDYNATTLIB = @VTDYNATTLIB@
VT_WRAPPER_AVAIL_INST = @VT_WRAPPER_AVAIL_INST@
VT_WRAPPER_DEFAULT_INST = @VT_WRAPPER_DEFAULT_INST@
VT_WRAPPER_EXTRA_CFLAGS = @VT_WRAPPER_EXTRA_CFLAGS@
VT_WRAPPER_EXTRA_CXXFLAGS = @VT_WRAPPER_EXTRA_CXXFLAGS@
VT_WRAPPER_EXTRA_FCFLAGS = @VT_WRAPPER_EXTRA_FCFLAGS@
VT_WRAPPER_EXTRA_FFLAGS = @VT_WRAPPER_EXTRA_FFLAGS@
VT_WRAPPER_EXTRA_LDFLAGS = @VT_WRAPPER_EXTRA_LDFLAGS@
VT_WRAPPER_EXTRA_LIBS = @VT_WRAPPER_EXTRA_LIBS@
VT_WRAPPER_INCDIR = @VT_WRAPPER_INCDIR@
VT_WRAPPER_LIBDIR = @VT_WRAPPER_LIBDIR@
VT_WRAPPER_OPARI_BIN = @VT_WRAPPER_OPARI_BIN@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
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@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
vtdata_DATA = \
FILTER.SPEC \
GROUPS.SPEC \
METRICS.SPEC
vtdoc_DATA = \
$(top_srcdir)/ChangeLog \
\
LICENSE \
UserManual.html \
UserManual.pdf
vtdatadir = $(datadir)
vtdocdir = $(docdir)
EXTRA_DIST = \
$(vtdata_DATA) \
$(vtdoc_DATA)
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 \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu doc/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
install-vtdataDATA: $(vtdata_DATA)
@$(NORMAL_INSTALL)
test -z "$(vtdatadir)" || $(MKDIR_P) "$(DESTDIR)$(vtdatadir)"
@list='$(vtdata_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(vtdataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(vtdatadir)/$$f'"; \
$(vtdataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(vtdatadir)/$$f"; \
done
uninstall-vtdataDATA:
@$(NORMAL_UNINSTALL)
@list='$(vtdata_DATA)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(vtdatadir)/$$f'"; \
rm -f "$(DESTDIR)$(vtdatadir)/$$f"; \
done
install-vtdocDATA: $(vtdoc_DATA)
@$(NORMAL_INSTALL)
test -z "$(vtdocdir)" || $(MKDIR_P) "$(DESTDIR)$(vtdocdir)"
@list='$(vtdoc_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(vtdocDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(vtdocdir)/$$f'"; \
$(vtdocDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(vtdocdir)/$$f"; \
done
uninstall-vtdocDATA:
@$(NORMAL_UNINSTALL)
@list='$(vtdoc_DATA)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(vtdocdir)/$$f'"; \
rm -f "$(DESTDIR)$(vtdocdir)/$$f"; \
done
tags: TAGS
TAGS:
ctags: CTAGS
CTAGS:
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 $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$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)$(vtdatadir)" "$(DESTDIR)$(vtdocdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
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 mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am: install-vtdataDATA install-vtdocDATA
install-dvi: install-dvi-am
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
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
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-vtdataDATA uninstall-vtdocDATA
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic distclean \
distclean-generic 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 install-vtdataDATA install-vtdocDATA \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
pdf-am ps ps-am uninstall uninstall-am uninstall-vtdataDATA \
uninstall-vtdocDATA
LICENSE: $(top_srcdir)/COPYING
cp $(top_srcdir)/COPYING LICENSE
# 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:

2141
ompi/contrib/vt/vt/doc/UserManual.html Обычный файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Двоичные данные
ompi/contrib/vt/vt/doc/UserManual.pdf Обычный файл

Двоичный файл не отображается.

46
ompi/contrib/vt/vt/examples/c/Makefile Обычный файл
Просмотреть файл

@ -0,0 +1,46 @@
include Makefile.config
TARGETS = $(HELLO_TGT1) $(HELLO_TGT2) $(HELLO_TGT3) \
$(PI_TGT1) $(PI_TGT2) $(PI_TGT3) \
$(RING_TGT1) $(RING_TGT2) $(RING_TGT3)
.PHONY: all
all: $(TARGETS)
### hello-man ###
hello-man: hello.c
$(MPICC) -vt:inst manual $(MPICFLAGS) -DMANUAL $^ -o $@ -DVTRACE $(MPILIB)
### hello-comp ###
hello-comp: hello.c
$(MPICC) $(MPICFLAGS) $^ -o $@ $(MPILIB)
### hello-dyn ###
hello-dyn: hello.c
$(MPICC) -vt:inst dyninst $(MPICFLAGS) $^ -o $@ $(MPILIB)
### pi-man ###
pi-man: pi.c
$(MPICC) -vt:inst manual $(MPICFLAGS) -DMANUAL $^ -o $@ -lm -DVTRACE $(MPILIB)
### pi-comp ###
pi-comp: pi.c
$(MPICC) $(MPICFLAGS) $^ -o $@ -lm $(MPILIB)
### pi-dyn ###
pi-dyn: pi.c
$(MPICC) -vt:inst dyninst $(MPICFLAGS) $^ -o $@ -lm $(MPILIB)
### ring-man ###
ring-man: ring.c
$(MPICC) -vt:inst manual $(MPICFLAGS) -DMANUAL $^ -o $@ -DVTRACE $(MPILIB)
### ring-comp ###
ring-comp: ring.c
$(MPICC) $(MPICFLAGS) $^ -o $@ $(MPILIB)
### ring-dyn ###
ring-dyn: ring.c
$(MPICC) -vt:inst dyninst $(MPICFLAGS) $^ -o $@ $(MPILIB)
.PHONY: clean
clean:
-rm -f $(TARGETS) *~ *.o

Просмотреть файл

@ -0,0 +1,26 @@
# MPI C Compiler command, Compiler Flags, and MPI Library
MPICC = vtcc -vt:cc mpicc
MPICFLAGS = -g
MPILIB =
# Example targets:
# <prog>-man == manual: functions and loops by using VampirTrace's API
# <prog>-comp == automatic: functions by using compiler
# <prog>-dyn == binary-automatic: functions by using Dyninst
# (comment line to disable a target)
# HELLO (Hello World (MPI))
HELLO_TGT1 = hello-man
HELLO_TGT2 = hello-comp
#HELLO_TGT3 = hello-dyn
# PI (Approximates the value of pi (MPI))
PI_TGT1 = pi-man
PI_TGT2 = pi-comp
#PI_TGT3 = pi-dyn
# RING (Send a trivial message around in a ring (MPI))
RING_TGT1 = ring-man
RING_TGT2 = ring-comp
#RING_TGT3 = ring-dyn

31
ompi/contrib/vt/vt/examples/c/hello.c Обычный файл
Просмотреть файл

@ -0,0 +1,31 @@
#include <stdio.h>
#include <mpi.h>
#ifdef MANUAL
#include "vt_user.h"
#endif
int
main(int argc, char *argv[])
{
int rank, size;
#if (defined(MANUAL))
VT_USER_START("main");
#endif
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
printf("Hello from process %i of %i !\n", rank, size);
MPI_Finalize();
#ifdef MANUAL
VT_USER_END("main");
#endif
return 0;
}

95
ompi/contrib/vt/vt/examples/c/pi.c Обычный файл
Просмотреть файл

@ -0,0 +1,95 @@
#include <stdio.h>
#include <math.h>
#include <mpi.h>
#ifdef MANUAL
#include "vt_user.h"
#endif
/* Constant for how many values we'll estimate */
#define NUM_ITERS 1000
/* Prototype the function that we'll use below. */
static double f(double);
int
main(int argc, char *argv[])
{
int iter, rank, size, i;
double PI25DT = 3.141592653589793238462643;
double mypi, pi, h, sum, x;
double startwtime = 0.0, endwtime;
int namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
#ifdef MANUAL
VT_USER_START("main");
#endif
/* Normal MPI startup */
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Get_processor_name(processor_name, &namelen);
printf("Process %d of %d on %s\n", rank, size, processor_name);
/* Do approximations for 1 to 100 points */
for (iter = 2; iter < NUM_ITERS; ++iter) {
h = 1.0 / (double) iter;
sum = 0.0;
/* A slightly better approach starts from large i and works back */
if (rank == 0)
startwtime = MPI_Wtime();
for (i = rank + 1; i <= iter; i += size) {
x = h * ((double) i - 0.5);
sum += f(x);
}
mypi = h * sum;
MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);
if (rank == 0) {
printf("%d points: pi is approximately %.16f, error = %.16f\n",
iter, pi, fabs(pi - PI25DT));
endwtime = MPI_Wtime();
printf("wall clock time = %f\n", endwtime - startwtime);
fflush(stdout);
}
}
/* All done */
MPI_Finalize();
#ifdef MANUAL
VT_USER_END("main");
#endif
return 0;
}
static double
f(double a)
{
double e;
#ifdef MANUAL
VT_USER_START("f");
#endif
e = (4.0 / (1.0 + a * a));
#ifdef MANUAL
VT_USER_END("f");
#endif
return e;
}

96
ompi/contrib/vt/vt/examples/c/ring.c Обычный файл
Просмотреть файл

@ -0,0 +1,96 @@
/*
* Simple ring test program
*/
#include <stdio.h>
#include <mpi.h>
#ifdef MANUAL
#include "vt_user.h"
#endif
#define NRING 100
#define TAG 4711
int main(int argc, char *argv[])
{
int rank, size, next, prev, message;
#ifdef MANUAL
VT_USER_START("main");
#endif
/* Start up MPI */
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
/* Calculate the rank of the next process in the ring. Use the
modulus operator so that the last process "wraps around" to
rank zero. */
next = (rank + 1) % size;
prev = (rank + size - 1) % size;
/* If we are the "master" process (i.e., MPI_COMM_WORLD rank 0),
put the number of times to go around the ring in the
message. */
if (0 == rank) {
message = NRING;
printf("Process 0 sending %d to %d, tag %d (%d processes in ring)\n",
message, next, TAG, size);
MPI_Send(&message, 1, MPI_INT, next, TAG, MPI_COMM_WORLD);
printf("Process 0 sent to %d\n", next);
}
/* Pass the message around the ring. The exit mechanism works as
follows: the message (a positive integer) is passed around the
ring. Each time it passes rank 0, it is decremented. When
each processes receives a message containing a 0 value, it
passes the message on to the next process and then quits. By
passing the 0 message first, every process gets the 0 message
and can quit normally. */
while (1) {
#ifdef MANUAL
VT_USER_START("ring_loop");
#endif
MPI_Recv(&message, 1, MPI_INT, prev, TAG, MPI_COMM_WORLD,
MPI_STATUS_IGNORE);
if (0 == rank) {
--message;
printf("Process 0 decremented value: %d\n", message);
}
MPI_Send(&message, 1, MPI_INT, next, TAG, MPI_COMM_WORLD);
if (0 == message) {
printf("Process %d exiting\n", rank);
break;
}
#ifdef MANUAL
VT_USER_END("ring_loop");
#endif
}
/* The last process does one extra send to process 0, which needs
to be received before the program can exit */
if (0 == rank) {
MPI_Recv(&message, 1, MPI_INT, prev, TAG, MPI_COMM_WORLD,
MPI_STATUS_IGNORE);
}
/* All done */
MPI_Finalize();
#ifdef MANUAL
VT_USER_END("main");
#endif
return 0;
}

46
ompi/contrib/vt/vt/examples/cxx/Makefile Обычный файл
Просмотреть файл

@ -0,0 +1,46 @@
include Makefile.config
TARGETS = $(HELLO_TGT1) $(HELLO_TGT2) $(HELLO_TGT3) \
$(PI_TGT1) $(PI_TGT2) $(PI_TGT3) \
$(RING_TGT1) $(RING_TGT2) $(RING_TGT3)
.PHONY: all
all: $(TARGETS)
### hello-man ###
hello-man: hello.cc
$(MPICXX) -vt:inst manual $(MPICXXFLAGS) -DMANUAL $^ -o $@ -DVTRACE $(MPILIB)
### hello-comp ###
hello-comp: hello.cc
$(MPICXX) $(MPICXXFLAGS) $^ -o $@ $(MPILIB)
### hello-dyn ###
hello-dyn: hello.cc
$(MPICXX) -vt:inst dyninst $(MPICXXFLAGS) $^ -o $@ $(MPILIB)
### pi-man ###
pi-man: pi.cc
$(MPICXX) -vt:inst manual $(MPICXXFLAGS) -DMANUAL $^ -o $@ -lm $(MPILIB)
### pi-comp ###
pi-comp: pi.cc
$(MPICXX) $(MPICXXFLAGS) $^ -o $@ -lm $(MPILIB)
### pi-dyn ###
pi-dyn: pi.cc
$(MPICXX) -vt:inst dyninst $(MPICXXFLAGS) $^ -o $@ -lm $(MPILIB)
### ring-man ###
ring-man: ring.cc
$(MPICXX) -vt:inst manual $(MPICXXFLAGS) -DMANUAL $^ -o $@ -DVTRACE $(MPILIB)
### ring-comp ###
ring-comp: ring.cc
$(MPICXX) $(MPICXXFLAGS) $^ -o $@ $(MPILIB)
### ring-dyn ###
ring-dyn: ring.cc
$(MPICXX) -vt:inst dyninst $(MPICXXFLAGS) $^ -o $@ $(MPILIB)
.PHONY: clean
clean:
-rm -f $(TARGETS) *~ *.o

Просмотреть файл

@ -0,0 +1,26 @@
# MPI C++ Compiler command, Compiler Flags, and MPI Library
MPICXX = vtcxx -vt:cxx mpicxx
MPICXXFLAGS = -g
MPILIB =
# Example targets:
# <prog>-man == manual: functions and loops by using VampirTrace's API
# <prog>-comp == automatic: functions by using compiler
# <prog>-dyn == binary-automatic: functions by using Dyninst
# (comment line to disable a target)
# HELLO (Hello World (MPI))
HELLO_TGT1 = hello-man
HELLO_TGT2 = hello-comp
#HELLO_TGT3 = hello-dyn
# PI (Approximates the value of pi (MPI))
PI_TGT1 = pi-man
PI_TGT2 = pi-comp
#PI_TGT3 = pi-dyn
# RING (Send a trivial message around in a ring (MPI))
RING_TGT1 = ring-man
RING_TGT2 = ring-comp
#RING_TGT3 = ring-dyn

29
ompi/contrib/vt/vt/examples/cxx/hello.cc Обычный файл
Просмотреть файл

@ -0,0 +1,29 @@
#include <mpi.h>
#include <iostream>
#ifdef MANUAL
#include "vt_user.h"
#endif
using namespace std;
int
main(int argc, char *argv[])
{
int rank, size;
#ifdef MANUAL
VT_TRACER("main");
#endif
MPI::Init(argc, argv);
size = MPI::COMM_WORLD.Get_size();
rank = MPI::COMM_WORLD.Get_rank();
cout << "Hello from " << rank << " of " << size << " !" << endl;
MPI::Finalize();
return 0;
}

65
ompi/contrib/vt/vt/examples/cxx/pi.cc Обычный файл
Просмотреть файл

@ -0,0 +1,65 @@
#include <mpi.h>
#include <iostream>
#include <math.h>
#ifdef MANUAL
#include "vt_user.h"
#endif
#define NUM_ITERS 100000
using namespace std;
static double f(double);
int
main(int argc, char *argv[])
{
int n = NUM_ITERS;
int rank, size, i;
double PI25DT = 3.141592653589793238462643;
double mypi, pi, h, sum, x;
#ifdef MANUAL
VT_TRACER("main");
#endif
MPI::Init(argc, argv);
size = MPI::COMM_WORLD.Get_size();
rank = MPI::COMM_WORLD.Get_rank();
h = 1.0 / (double) n;
sum = 0.0;
for (i = rank + 1; i <= n; i += size) {
x = h * ((double)i - 0.5);
sum += f(x);
}
mypi = h * sum;
// Combine all the partial results
MPI::COMM_WORLD.Reduce(&mypi, &pi, 1, MPI::DOUBLE, MPI::SUM, 0);
if (rank == 0) {
cout << "After " << n << " iterations, pi is approximately "
<< pi << ", Error is " << fabs(pi - PI25DT) << endl;
}
MPI::Finalize();
return 0;
}
static double
f(double a)
{
double e;
#ifdef MANUAL
VT_TRACER("f");
#endif
e = (4.0 / (1.0 + a * a));
return e;
}

88
ompi/contrib/vt/vt/examples/cxx/ring.cc Обычный файл
Просмотреть файл

@ -0,0 +1,88 @@
//
// Simple ring test program
//
#include <mpi.h>
#include <iostream>
#ifdef MANUAL
#include "vt_user.h"
#endif
#define NRING 100
#define TAG 4711
int main(int argc, char *argv[])
{
int rank, size, next, prev, message;
#ifdef MANUAL
VT_TRACER("main");
#endif
// Start up MPI
MPI::Init();
rank = MPI::COMM_WORLD.Get_rank();
size = MPI::COMM_WORLD.Get_size();
// Calculate the rank of the next process in the ring. Use the
// modulus operator so that the last process "wraps around" to
// rank zero.
next = (rank + 1) % size;
prev = (rank + size - 1) % size;
// If we are the "master" process (i.e., MPI_COMM_WORLD rank 0),
// put the number of times to go around the ring in the message.
if (0 == rank) {
message = NRING;
std::cout << "Process 0 sending " << message << " to " << next
<< ", tag " << TAG << " (" << size << " processes in ring)"
<< std::endl;
MPI::COMM_WORLD.Send(&message, 1, MPI::INT, next, TAG);
std::cout << "Process 0 sent to " << next << std::endl;
}
// Pass the message around the ring. The exit mechanism works as
// follows: the message (a positive integer) is passed around the
// ring. Each time it passes rank 0, it is decremented. When
// each processes receives a message containing a 0 value, it
// passes the message on to the next process and then quits. By
// passing the 0 message first, every process gets the 0 message
// and can quit normally.
while (1) {
#ifdef MANUAL
VT_TRACER("ring_loop");
#endif
MPI::COMM_WORLD.Recv(&message, 1, MPI::INT, prev, TAG);
if (0 == rank) {
--message;
std::cout << "Process 0 decremented value: " << message
<< std::endl;
}
MPI::COMM_WORLD.Send(&message, 1, MPI::INT, next, TAG);
if (0 == message) {
std::cout << "Process " << rank << " exiting" << std::endl;
break;
}
}
// The last process does one extra send to process 0, which needs
// to be received before the program can exit */
if (0 == rank) {
MPI::COMM_WORLD.Recv(&message, 1, MPI::INT, prev, TAG);
}
// All done
MPI::Finalize();
return 0;
}

Просмотреть файл

@ -0,0 +1,46 @@
include Makefile.config
TARGETS = $(HELLO_TGT1) $(HELLO_TGT2) $(HELLO_TGT3) \
$(PI_TGT1) $(PI_TGT2) $(PI_TGT3) \
$(RING_TGT1) $(RING_TGT2) $(RING_TGT3)
.PHONY: all
all: $(TARGETS)
### hello-man ###
hello-man: hello.F
$(MPIFC) -vt:inst manual $(MPIFFLAGS) $(FDOPT)MANUAL $^ -o $@ $(FDOPT)VTRACE $(MPILIB)
### hello-comp ###
hello-comp: hello.F
$(MPIFC) $(MPIFFLAGS) $^ -o $@ $(MPILIB)
### hello-dyn ###
hello-dyn: hello.F
$(MPIFC) -vt:inst dyninst $(MPIFFLAGS) $^ -o $@ $(MPILIB)
### pi-man ###
pi-man: pi.F
$(MPIFC) -vt:inst manual $(MPIFFLAGS) $(FDOPT)MANUAL $^ -o $@ -lm $(FDOPT)VTRACE $(MPILIB)
### pi-comp ###
pi-comp: pi.F
$(MPIFC) $(MPIFFLAGS) $^ -o $@ -lm $(MPILIB)
### pi-dyn ###
pi-dyn: pi.F
$(MPIFC) -vt:inst dyninst $(MPIFFLAGS) $^ -o $@ -lm $(MPILIB)
### ring-man ###
ring-man: ring.F
$(MPIFC) -vt:inst manual $(MPIFFLAGS) $(FDOPT)MANUAL $^ -o $@ $(FDOPT)VTRACE $(MPILIB)
### ring-comp ###
ring-comp: ring.F
$(MPIFC) $(MPIFFLAGS) $^ -o $@ $(MPILIB)
### ring-dyn ###
ring-dyn: ring.F
$(MPIFC) -vt:inst dyninst $(MPIFFLAGS) $^ -o $@ $(MPILIB)
.PHONY: clean
clean:
-rm -f $(TARGETS) *~ *.o

Просмотреть файл

@ -0,0 +1,29 @@
# MPI Fortran Compiler command, Compiler Flags, and MPI Library
MPIFC = vtf90 -vt:f90 mpif90
MPIFFLAGS = -g
MPILIB =
FDOPT = -D
#FDOPT = -WF,D
# Example targets:
# targets and coresponding instrumentation type
# <prog>-man == manual: functions and loops by using VampirTrace's API
# <prog>-comp == automatic: functions by using compiler
# <prog>-dyn == binary-automatic: functions by using Dyninst
# (comment line to disable a target)
# HELLO (Hello World)
HELLO_TGT1 = hello-man
HELLO_TGT2 = hello-comp
#HELLO_TGT3 = hello-dyn
# PI (Approximates the value of pi)
PI_TGT1 = pi-man
PI_TGT2 = pi-comp
#PI_TGT3 = pi-dyn
# RING (Send a trivial message around in a ring)
RING_TGT1 = ring-man
RING_TGT2 = ring-comp
#RING_TGT3 = ring-dyn

28
ompi/contrib/vt/vt/examples/fortran/hello.F Обычный файл
Просмотреть файл

@ -0,0 +1,28 @@
#ifdef MANUAL
#include "vt_user.inc"
#endif
program hello
include 'mpif.h'
integer rank, size
#ifdef MANUAL
VT_USER_START('hello')
#endif
call MPI_INIT(ierr)
call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr)
call MPI_COMM_SIZE(MPI_COMM_WORLD, size, ierr)
print *, "Hello from process ", rank, " of ", size, " !"
call MPI_FINALIZE(rc)
#ifdef MANUAL
VT_USER_END('hello')
#endif
stop
end

84
ompi/contrib/vt/vt/examples/fortran/pi.F Обычный файл
Просмотреть файл

@ -0,0 +1,84 @@
#ifdef MANUAL
#include "vt_user.inc"
#endif
program calcpi
include 'mpif.h'
double precision PI25DT
parameter (PI25DT = 3.141592653589793238462643d0)
double precision mypi, pi, h, sum, x, f, a
integer num_iters, rank, size, i, rc
c Function to integrate
f(a) = 4.d0 / (1.d0 + a * a)
#ifdef MANUAL
VT_USER_START('calcpi')
#endif
c Normal MPI startup
call MPI_INIT(ierr)
call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr)
call MPI_COMM_SIZE(MPI_COMM_WORLD, size, ierr)
print *, "Process ", rank, " of ", size, " is alive"
c Loop until finished
num_iters = 1000
do 20 iter = 2, num_iters
#ifdef MANUAL
VT_USER_START('outer_loop');
#endif
c Calculate the interval size
h = 1.0d0 / iter
sum = 0.0d0
do 10 i = rank + 1, iter, size
#ifdef MANUAL
VT_USER_START('inner_loop');
#endif
x = h * (dble(i) - 0.5d0)
sum = sum + f(x)
#ifdef MANUAL
VT_USER_END('inner_loop');
#endif
10 continue
mypi = h * sum
c Collect all the partial sums
call MPI_REDUCE(mypi, pi, 1, MPI_DOUBLE_PRECISION, MPI_SUM, 0,
$ MPI_COMM_WORLD, ierr)
c Node 0 prints the answer.
if (rank .eq. 0) then
write(6, 97) iter, pi, abs(pi - PI25DT)
97 format(i3, ' points: pi is approximately: ', F18.16,
+ ' error is: ', F18.16)
endif
#ifdef MANUAL
VT_USER_END('outer_loop');
#endif
20 continue
c All finished
call MPI_FINALIZE(rc)
#ifdef MANUAL
VT_USER_END('calcpi')
#endif
stop
end

98
ompi/contrib/vt/vt/examples/fortran/ring.F Обычный файл
Просмотреть файл

@ -0,0 +1,98 @@
C
C Simple ring test program
C
#ifdef MANUAL
#include "vt_user.inc"
#endif
program ring
implicit none
include 'mpif.h'
integer rank, size, tag, next, from, message, ierr
integer status(MPI_STATUS_SIZE)
#ifdef MANUAL
VT_USER_START('ring')
#endif
C Start up MPI */
call MPI_INIT(ierr)
call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr)
call MPI_COMM_SIZE(MPI_COMM_WORLD, size, ierr)
C Calculate the rank of the next process in the ring. Use the
C modulus operator so that the last process "wraps around" to rank
C zero.
tag = 4711
next = mod((rank + 1), size)
from = mod((rank + size - 1), size)
C If we are the "master" process (i.e., MPI_COMM_WORLD rank 0), put
C the number of times to go around the ring in the message.
if (rank .eq. 0) then
message = 100
print *, 'Process 0 sending ', message, ' to ', next, ' tag ',
& tag, ' (', size, ' processes in ring)'
call MPI_SEND(message, 1, MPI_INTEGER, next, tag,
& MPI_COMM_WORLD, ierr)
print *, 'Process 0 sent to ', next
endif
C Pass the message around the ring. The exit mechanism works as
C follows: the message (a positive integer) is passed around the
C ring. Each time it passes rank 0, it is decremented. When each
C processes receives a message containing a 0 value, it passes the
C message on to the next process and then quits. By passing the 0
C message first, every process gets the 0 message and can quit
C normally.
10 continue
#ifdef MANUAL
VT_USER_START('ring_loop')
#endif
call MPI_RECV(message, 1, MPI_INTEGER, from, tag,
& MPI_COMM_WORLD, status, ierr)
if (rank .eq. 0) then
message = message - 1
print *, 'Process 0 decremented value:', message
endif
call MPI_SEND(message, 1, MPI_INTEGER, next, tag,
& MPI_COMM_WORLD, ierr)
if (message .eq. 0) then
print *, 'Process ', rank, ' exiting'
#ifdef MANUAL
VT_USER_END('ring_loop')
#endif
goto 20
endif
#ifdef MANUAL
VT_USER_END('ring_loop')
#endif
goto 10
C The last process does one extra send to process 0, which needs to
C be received before the program can exit
20 if (rank .eq. 0) then
call MPI_RECV(message, 1, MPI_INTEGER, from, tag,
& MPI_COMM_WORLD, status, ierr)
endif
C All done
call MPI_FINALIZE(ierr)
#ifdef MANUAL
VT_USER_END('ring')
#endif
end

6
ompi/contrib/vt/vt/extlib/Makefile.am Обычный файл
Просмотреть файл

@ -0,0 +1,6 @@
if AMEXTERNOTF
SUBDIRS =
else
SUBDIRS = otf
endif

525
ompi/contrib/vt/vt/extlib/Makefile.in Обычный файл
Просмотреть файл

@ -0,0 +1,525 @@
# Makefile.in generated by automake 1.10 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006 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@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@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
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-dvi-recursive install-exec-recursive \
install-html-recursive install-info-recursive \
install-pdf-recursive install-ps-recursive install-recursive \
installcheck-recursive installdirs-recursive pdf-recursive \
ps-recursive uninstall-recursive
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = otf
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BFDINCDIR = @BFDINCDIR@
BFDLIB = @BFDLIB@
BFDLIBDIR = @BFDLIBDIR@
CC = @CC@
CCAS = @CCAS@
CCASDEPMODE = @CCASDEPMODE@
CCASFLAGS = @CCASFLAGS@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXCPP_FOR_BUILD = @CXXCPP_FOR_BUILD@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@
CXX_FOR_BUILD = @CXX_FOR_BUILD@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLINCDIR = @DLINCDIR@
DLLIB = @DLLIB@
DLLIBDIR = @DLLIBDIR@
DYNIINCDIR = @DYNIINCDIR@
DYNILIB = @DYNILIB@
DYNILIBDIR = @DYNILIBDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
F77 = @F77@
FC = @FC@
FCFLAGS = @FCFLAGS@
FFLAGS = @FFLAGS@
FMPILIB = @FMPILIB@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@
LDSHFLAG = @LDSHFLAG@
LIBERTYINCDIR = @LIBERTYINCDIR@
LIBERTYLIB = @LIBERTYLIB@
LIBERTYLIBDIR = @LIBERTYLIBDIR@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBS_FOR_BUILD = @LIBS_FOR_BUILD@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
MPICC = @MPICC@
MPICFLAGS = @MPICFLAGS@
MPIDIR = @MPIDIR@
MPIINCDIR = @MPIINCDIR@
MPILIB = @MPILIB@
MPILIBDIR = @MPILIBDIR@
OBJEXT = @OBJEXT@
OMPFLAG = @OMPFLAG@
OTFDIR = @OTFDIR@
OTFINCDIR = @OTFINCDIR@
OTFLIB = @OTFLIB@
OTFLIBDIR = @OTFLIBDIR@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PAPIINCDIR = @PAPIINCDIR@
PAPILIB = @PAPILIB@
PAPILIBDIR = @PAPILIBDIR@
PATH_SEPARATOR = @PATH_SEPARATOR@
PLATFORM = @PLATFORM@
PMPILIB = @PMPILIB@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
VTDYNATTLIB = @VTDYNATTLIB@
VT_WRAPPER_AVAIL_INST = @VT_WRAPPER_AVAIL_INST@
VT_WRAPPER_DEFAULT_INST = @VT_WRAPPER_DEFAULT_INST@
VT_WRAPPER_EXTRA_CFLAGS = @VT_WRAPPER_EXTRA_CFLAGS@
VT_WRAPPER_EXTRA_CXXFLAGS = @VT_WRAPPER_EXTRA_CXXFLAGS@
VT_WRAPPER_EXTRA_FCFLAGS = @VT_WRAPPER_EXTRA_FCFLAGS@
VT_WRAPPER_EXTRA_FFLAGS = @VT_WRAPPER_EXTRA_FFLAGS@
VT_WRAPPER_EXTRA_LDFLAGS = @VT_WRAPPER_EXTRA_LDFLAGS@
VT_WRAPPER_EXTRA_LIBS = @VT_WRAPPER_EXTRA_LIBS@
VT_WRAPPER_INCDIR = @VT_WRAPPER_INCDIR@
VT_WRAPPER_LIBDIR = @VT_WRAPPER_LIBDIR@
VT_WRAPPER_OPARI_BIN = @VT_WRAPPER_OPARI_BIN@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
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@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
@AMEXTERNOTF_FALSE@SUBDIRS = otf
@AMEXTERNOTF_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 \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu extlib/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu extlib/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
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 || \
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
distdir=`$(am__cd) $(distdir) && pwd`; \
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$top_distdir" \
distdir="$$distdir/$$subdir" \
am__remove_distdir=: \
am__skip_length_check=: \
distdir) \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-recursive
all-am: Makefile
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
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 mostlyclean-am
distclean: distclean-recursive
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
info: info-recursive
info-am:
install-data-am:
install-dvi: install-dvi-recursive
install-exec-am:
install-html: install-html-recursive
install-info: install-info-recursive
install-man:
install-pdf: install-pdf-recursive
install-ps: install-ps-recursive
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
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am:
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
install-strip
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
all all-am check check-am clean clean-generic ctags \
ctags-recursive distclean distclean-generic 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 pdf pdf-am ps ps-am tags \
tags-recursive uninstall uninstall-am
# 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:

5
ompi/contrib/vt/vt/extlib/otf/AUTHORS Обычный файл
Просмотреть файл

@ -0,0 +1,5 @@
Andreas Knuepfer <andreas.knuepfer AT tu-dresden.de>
Ronny Brendel <ronny.brendel AT tu-dresden.de>
Matthias Jurenz <matthias.jurenz AT tu-dresden.de>
Holger Brunst <holger.brunst AT tu-dresden.de>
Hartmut Mix <hartmut.mix AT tu-dresden.de>

29
ompi/contrib/vt/vt/extlib/otf/COPYING Обычный файл
Просмотреть файл

@ -0,0 +1,29 @@
Copyright (c) 2005-2007, 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.

206
ompi/contrib/vt/vt/extlib/otf/ChangeLog Обычный файл
Просмотреть файл

@ -0,0 +1,206 @@
1.0.x
- initial version
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.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.3
- fixed a minor bug in otfaux
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.5
- have UnknownRecord report handle incomplete records or additional bytes at
the end of a file.
1.2.0
- introduce transparent zlib compression
1.2.1
- added progress functions using read bytes instead of timestamps
1.2.2
- important bugfix: definitionstream 0 was ignored since version 1.2.0
1.2.3
- bugfix: provided copy handlers returned wrong value
1.2.4
- bugfix: zlib compression bug, wrong sanity check fixed
1.2.5
- bugfix: correctly handle process groups with more than 1000 entries
1.2.6
- support shared libraries
1.2.7
- added progress functions to OTF_RStream
- added a progress counter to otfmerge
1.2.8
- allow suffix '.dylib' for zlib library file (from Mac OS X)
- removed configure warning
1.2.9
- changeable zlevel
- changeable zbuffersize
1.2.10
- bugfix: otfmerge does no longer accept traces with local streams
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.12
- removed intel compiler warnings in otfmerge
- removed debug output
- fixed 64bit issue
1.2.13
- removed intel compiler warnings
- changed OTF_FILETYPE_*-macros
- fixed issues with OTF_getFilename()
1.2.14
- do not linke with '-lz' if '--with-zlibsymbols' was specified
- added zlib include line to otflib/Makefile.am
1.2.15
- 3 new records introduced (NOTE: these are experimental):
- DefFile
- DefFileGroup
- FileOperation
1.2.16
- fixed a problem with comments in otfmerge
- 2 new records introduced (NOTE: these are experimental):
- OpenFileSnapshot
- FileOperationSummary
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.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.19
- finished otfdump
- removed debug output in OTF_Reader.c
- re-introduced DefVersion record as read only
1.2.20
- added own inttypes definitions in case there is no on the platform
(necessary on NEC SX6)
1.2.21
- fixed "--with-zlib-symbols"-bug
1.2.22
- fixed inttypes/stdint bug
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.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.3.0
- 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.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.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.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.4
- bug fix in otfmerge: missing handling of DefCollectiveOperation
- bugfix in the documentation: overview.eps was broken
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.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.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.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.9
- fixed a portability bug: use own implementation of function
'strdup()'
- install a symbolic link 'otfdecompress' which is a synonym for
'otfcompress -d'

295
ompi/contrib/vt/vt/extlib/otf/INSTALL Обычный файл
Просмотреть файл

@ -0,0 +1,295 @@
(See specific OTF related information at the end of this file.)
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
Foundation, Inc.
This file is free documentation; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.
Basic Installation
==================
These are generic installation instructions. OTF-specific options can be
found at the end of this document.
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 only 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. If you're
using `csh' on an old version of System V, you might need to type
`sh ./configure' instead to prevent `csh' from trying to execute
`configure' itself.
Running `configure' takes awhile. 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.
4. Type `make install' to install the programs and any data files and
documentation.
5. 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.
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=c89 CFLAGS=-O2 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 must use a version of `make' that
supports the `VPATH' variable, such as 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 `..'.
If you have to use a `make' that does not support the `VPATH'
variable, you have 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.
Installation Names
==================
By default, `make install' will install the package's files in
`/usr/local/bin', `/usr/local/man', etc. You can specify an
installation prefix other than `/usr/local' by giving `configure' the
option `--prefix=PATH'.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
give `configure' the option `--exec-prefix=PATH', the package will use
PATH as the prefix for installing programs and libraries.
Documentation and other data files will still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=PATH' 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.
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'.
Optional Features
=================
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.
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 `--target=TYPE' option 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
will cause the specified gcc to be used as the C compiler (unless it is
overridden in the site shell script).
`configure' Invocation
======================
`configure' recognizes the following options to control how it
operates.
`--help'
`-h'
Print a summary of the options to `configure', and exit.
`--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.
`configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details.
OTF specific `configure' Examples
=================================
The '--with-vtf3' option allows to specify VTF3 include path and library path.
By default '../vtf3' is searched for headers & library unless '--without-vtf3'
is specified. Additional options '--with-vtf3-lib-dir' and
'--with-vtf3-include-dir' allow to give headers location and library location
separately.
Further options '--with-debug' and '--with-verbose' make the OTF library and
tools perform stricter checks and produce more verbose output (warnings/errors)
on stderr respectively.
On some platforms an error like "dereferencing type-punned pointer will break
strict-aliasing rules" may occur. If that is the case add "-fno-strict-aliasing"
(thats the parameter for gcc. It may be a bit different for other compilers)
to the CFLAGS and CXXFLAGS.
The '--with-zlib' option (default) enables tranparent compression/decompression
by ZLib, '--without-zlib' disables this feature. If '--with-zlibsymbols' is
specified in addition, all symbols from libz.a are directly included into
libotf.a. This makes it unnecessary to append '-lz' to another programs linker
list. However, it might cause collisions if '-lz' is present with the other
program already.
Note that '--with-zlibsymbols' is not compatible with shared libraries. The option
'--disable-shared' is necessary when ZLib symbols are included into OTF library.
Installing 32-bit and 64-bit Libraries Concurrently
===================================================
Some platforms support 32-bit and 64-bit executables and libraries. Please chose
one flavor as default and set appropriate options via './configure'. Then do
'make' and 'make install'. This will have everything built and installed with
default flavor: library, header files and tools.
In order to have alternative library flavor created, re-run './configure' with
alternative options and do 'make' but NOT 'make install'. Rather, copy the
library manually to the desired location. Make sure not to overwrite the default
library. Header files and tools are not affected by this issue because always
only the default version will be necessary.
Example configure Command Line
==============================
example on Linux:
%> ./configure CFLAGS="-O3 -g -Wall -Werror" CXXFLAGS="-O3 -g -Wall -Werror"
--with-vtf3=$HOME/prog/vtf/ --with-zlib --with-zlibsymbols --disable-shared
--prefix=$HOME
example on SGI Irix:
%> ./configure CC=cc CFLAGS="-O3 -n32 -g -ansiW" --with-vtf3=$HOME/prog/vtf/
example on NEC SX6i front end with cross compiler
%> ./configure AR="sxar" RANLIB="sxar st" CC="sxcc -sx5" CXX="sxc++ -sx5"
--host=sx6-nec-superux14.1 --build=i686-pc-linux-gnu
--without-zlib --prefix=/home_sx6i/knuepfe/

15
ompi/contrib/vt/vt/extlib/otf/Makefile.am Обычный файл
Просмотреть файл

@ -0,0 +1,15 @@
if AMHAVEPYTHONSWIG
SUBDIRS = \
otflib \
otflib_py \
tools
else
SUBDIRS = \
otflib \
tools
endif
EXTRA_DIST= \
docu/api/specification.pdf \
docu/tools/otftools.pdf \
docu/doxygen.conf \
otf_vc05.sln

669
ompi/contrib/vt/vt/extlib/otf/Makefile.in Обычный файл
Просмотреть файл

@ -0,0 +1,669 @@
# Makefile.in generated by automake 1.10 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006 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@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@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 = .
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
$(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
TODO config.guess config.sub depcomp install-sh ltmain.sh \
missing py-compile
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-dvi-recursive install-exec-recursive \
install-html-recursive install-info-recursive \
install-pdf-recursive install-ps-recursive install-recursive \
installcheck-recursive installdirs-recursive pdf-recursive \
ps-recursive uninstall-recursive
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = otflib tools otflib_py
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
{ test ! -d $(distdir) \
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -fr $(distdir); }; }
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
F77 = @F77@
FFLAGS = @FFLAGS@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PYTHON = @PYTHON@
PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@
PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@
PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@
PYTHON_LDFLAGS = @PYTHON_LDFLAGS@
PYTHON_SITE_PKG = @PYTHON_SITE_PKG@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
SWIG = @SWIG@
SWIG_PYTHON_CPPFLAGS = @SWIG_PYTHON_CPPFLAGS@
SWIG_PYTHON_OPT = @SWIG_PYTHON_OPT@
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@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
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@
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@
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_builddir = @top_builddir@
top_srcdir = @top_srcdir@
@AMHAVEPYTHONSWIG_FALSE@SUBDIRS = \
@AMHAVEPYTHONSWIG_FALSE@ otflib \
@AMHAVEPYTHONSWIG_FALSE@ tools
@AMHAVEPYTHONSWIG_TRUE@SUBDIRS = \
@AMHAVEPYTHONSWIG_TRUE@ otflib \
@AMHAVEPYTHONSWIG_TRUE@ otflib_py \
@AMHAVEPYTHONSWIG_TRUE@ tools
EXTRA_DIST = \
docu/api/specification.pdf \
docu/tools/otftools.pdf \
docu/doxygen.conf \
otf_vc05.sln
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
am--refresh:
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
cd $(srcdir) && $(AUTOMAKE) --gnu \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu Makefile
.PRECIOUS: 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)
cd $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
config.h: stamp-h1
@if test ! -f $@; then \
rm -f stamp-h1; \
$(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
else :; fi
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
cd $(top_builddir) && $(SHELL) ./config.status config.h
$(srcdir)/config.h.in: $(am__configure_deps)
cd $(top_srcdir) && $(AUTOHEADER)
rm -f stamp-h1
touch $@
distclean-hdr:
-rm -f config.h stamp-h1
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
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 || \
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
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 $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
distdir=`$(am__cd) $(distdir) && pwd`; \
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$top_distdir" \
distdir="$$distdir/$$subdir" \
am__remove_distdir=: \
am__skip_length_check=: \
distdir) \
|| exit 1; \
fi; \
done
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -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) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
$(am__remove_distdir)
dist-tarZ: distdir
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__remove_distdir)
dist-shar: distdir
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
$(am__remove_distdir)
dist dist-all: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__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*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
chmod -R a-w $(distdir); chmod a+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
chmod a-w $(distdir)
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& cd $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(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
$(am__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:
@cd $(distuninstallcheck_dir) \
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|| { 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 config.h
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
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-hdr \
distclean-libtool distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
info: info-recursive
info-am:
install-data-am:
install-dvi: install-dvi-recursive
install-exec-am:
install-html: install-html-recursive
install-info: install-info-recursive
install-man:
install-pdf: install-pdf-recursive
install-ps: install-ps-recursive
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:
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
install-strip
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
all all-am am--refresh check check-am clean clean-generic \
clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
dist-gzip dist-shar dist-tarZ dist-zip distcheck distclean \
distclean-generic distclean-hdr 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-ps install-ps-am install-strip \
installcheck installcheck-am installdirs installdirs-am \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-recursive uninstall uninstall-am
# 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:

0
ompi/contrib/vt/vt/extlib/otf/NEWS Обычный файл
Просмотреть файл

17
ompi/contrib/vt/vt/extlib/otf/README Обычный файл
Просмотреть файл

@ -0,0 +1,17 @@
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'.

28
ompi/contrib/vt/vt/extlib/otf/TODO Обычный файл
Просмотреть файл

@ -0,0 +1,28 @@
- 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

478
ompi/contrib/vt/vt/extlib/otf/acinclude.m4 Обычный файл
Просмотреть файл

@ -0,0 +1,478 @@
dnl have the vtf3 dirs specified
AC_DEFUN([CHECK_VTF3],
[
vtf3_error="no"
check_vtf3="yes"
force_vtf3="no"
have_vtf3="no"
AH_TEMPLATE(HAVE_VTF3, [], [defined if vtf3 library is to be used])
AC_ARG_WITH([vtf3],
AC_HELP_STRING([--with-vtf3],
[use vtf3, default: yes if found by configure]),
[if test "$withval" = "yes"; then force_vtf3="yes"; else check_vtf3="no"; fi])
AC_ARG_WITH([vtf3-dir],
AC_HELP_STRING([--with-vtf3-dir],
[give the path for vtf3, default: /usr]),
[vtf3_dir="$withval/"])
AC_ARG_WITH([vtf3-inc-dir],
AC_HELP_STRING([--with-vtf3-inc-dir],
[give the path dir vtf3-include files, default: VTF3DIR/include]),
[vtf3_inc_dir="$withval/"],
[if test x"$vtf3_dir" != x; then vtf3_inc_dir="$vtf3_dir"include/; fi])
AC_ARG_WITH([vtf3-lib-dir],
AC_HELP_STRING([--with-vtf3-lib-dir],
[give the path for VTF3-libraries, default: VTF3DIR/lib]),
[vtf3_lib_dir="$withval/"],
[if test x"$vtf3_dir" != x; then vtf3_lib_dir="$vtf3_dir"lib/; fi])
AC_ARG_WITH([vtf3-lib],
AC_HELP_STRING([--with-vtf3-lib],
[use given vtf3, default: -lvtf3]),
[vtf3_lib="$withval"])
if test "$check_vtf3" = "yes"; then
sav_CPPFLAGS=$CPPFLAGS
if test x"$vtf3_inc_dir" != x; then
CPPFLAGS="$CPPFLAGS -I$vtf3_inc_dir"
fi
AC_CHECK_HEADER([vtf3.h], [],
[
AC_MSG_NOTICE([error: no vtf3.h found; check path for VTF3 package first...])
vtf3_error="yes"
])
CPPFLAGS=$sav_CPPFLAGS
if test x"$vtf3_lib" = x -a "$vtf3_error" = "no"; then
sav_LIBS=$LIBS
cl="-lvtf3"
if test x"$vtf3_lib_dir" != x; then
cl="-L$vtf3_lib_dir $cl"
fi
LIBS="$LIBS $cl"
AC_MSG_CHECKING([whether linking with -lvtf3 works])
AC_TRY_LINK([],[],
[AC_MSG_RESULT([yes]); vtf3_lib=-lvtf3],[AC_MSG_RESULT([no])])
LIBS=$sav_LIBS
fi
if test x"$vtf3_lib" = x -a "$vtf3_error" = "no"; then
AC_MSG_NOTICE([error: no libvtf3 found; check path for VTF3 package first...])
vtf3_error="yes"
fi
if test $vtf3_error = "no"; then
AC_DEFINE(HAVE_VTF3)
have_vtf3="yes"
fi
fi
VTF3_LIB_DIR=$vtf3_lib_dir
VTF3_LIB_LINE=$vtf3_lib
if test x"$vtf3_lib_dir" != x; then
VTF3_LIB_LINE="-L$vtf3_lib_dir $VTF3_LIB_LINE"
fi
VTF3_INCLUDE_DIR=$vtf3_inc_dir
VTF3_INCLUDE_LINE=
if test x"$vtf3_inc_dir" != x; then
VTF3_INCLUDE_LINE="-I$vtf3_inc_dir"
fi
AC_SUBST(VTF3_LIB_DIR)
AC_SUBST(VTF3_LIB_LINE)
AC_SUBST(VTF3_INCLUDE_DIR)
AC_SUBST(VTF3_INCLUDE_LINE)
])
dnl have the zlib dirs specified
AC_DEFUN([CHECK_ZLIB],
[
zlib_error="no"
check_zlib="yes"
force_zlib="no"
have_zlib="no"
AH_TEMPLATE(HAVE_ZLIB, [], [defined if zlib library is to be used])
AC_ARG_WITH([zlib],
AC_HELP_STRING([--with-zlib],
[use zlib, default: yes if found by configure]),
[if test "$withval" = "yes"; then force_zlib="yes"; else check_zlib="no"; fi])
AC_ARG_WITH([zlib-dir],
AC_HELP_STRING([--with-zlib-dir],
[give the path for zlib, default: /usr]),
[zlib_dir="$withval/"])
AC_ARG_WITH([zlib-inc-dir],
AC_HELP_STRING([--with-zlib-inc-dir],
[give the path dir zlib-include files, default: ZLIBDIR/include]),
[zlib_inc_dir="$withval/"],
[if test x"$zlib_dir" != x; then zlib_inc_dir="$zlib_dir"include/; fi])
AC_ARG_WITH([zlib-lib-dir],
AC_HELP_STRING([--with-zlib-lib-dir],
[give the path for ZLIB-libraries, default: ZLIBDIR/lib]),
[zlib_lib_dir="$withval/"],
[if test x"$zlib_dir" != x; then zlib_lib_dir="$zlib_dir"lib/; fi])
AC_ARG_WITH([zlib-lib],
AC_HELP_STRING([--with-zlib-lib],
[use given zlib, default: -lz]),
[zlib_lib="$withval"])
if test "$check_zlib" = "yes"; then
sav_CPPFLAGS=$CPPFLAGS
if test x"$zlib_inc_dir" != x; then
CPPFLAGS="$CPPFLAGS -I$zlib_inc_dir"
fi
AC_CHECK_HEADER([zlib.h], [],
[
AC_MSG_NOTICE([error: no zlib.h found; check path for ZLIB package first...])
zlib_error="yes"
])
CPPFLAGS=$sav_CPPFLAGS
if test x"$zlib_lib" = x -a "$zlib_error" = "no"; then
sav_LIBS=$LIBS
cl="-lz"
if test x"$zlib_lib_dir" != x; then
cl="-L$zlib_lib_dir $cl"
fi
LIBS="$LIBS $cl"
AC_MSG_CHECKING([whether linking with -lz works])
AC_TRY_LINK([],[],
[AC_MSG_RESULT([yes]); zlib_lib=-lz],[AC_MSG_RESULT([no])])
LIBS=$sav_LIBS
fi
if test x"$zlib_lib" = x -a "$zlib_error" = "no"; then
AC_MSG_NOTICE([error: no libz found; check path for ZLIB package first...])
zlib_error="yes"
fi
if test $zlib_error = "no"; then
AC_DEFINE(HAVE_ZLIB)
have_zlib="yes"
fi
fi
ZLIB_LIB_DIR=$zlib_lib_dir
ZLIB_LIB_LINE=$zlib_lib
if test x"$zlib_lib_dir" != x; then
ZLIB_LIB_LINE="-L$zlib_lib_dir $ZLIB_LIB_LINE"
fi
ZLIB_INCLUDE_DIR=$zlib_inc_dir
ZLIB_INCLUDE_LINE=
if test x"$zlib_inc_dir" != x; then
ZLIB_INCLUDE_LINE="-I$zlib_inc_dir"
fi
AC_SUBST(ZLIB_LIB_DIR)
AC_SUBST(ZLIB_LIB_LINE)
AC_SUBST(ZLIB_INCLUDE_DIR)
AC_SUBST(ZLIB_INCLUDE_LINE)
])
dnl switch on/off additonal debug output in otf lib
AC_DEFUN([WITH_DEBUG],
[
AH_TEMPLATE(OTF_DEBUG, [], [switch on/off additonal debug checks in otf lib])
AC_ARG_WITH([debug],
AC_HELP_STRING([--with-debug],[additonal debug checks]),
[debug=$withval],
[debug=""])
AC_CACHE_CHECK([debug],
[debug],
[debug=])
if test "$debug" = yes; then
AC_DEFINE(OTF_DEBUG)
fi
])
dnl switch on/off additonal debug output in otf lib
AC_DEFUN([WITH_VERBOSE],
[
AH_TEMPLATE(OTF_VERBOSE, [], [switch on/off verbose output in otf lib])
AC_ARG_WITH([verbose],
AC_HELP_STRING([--with-verbose],[additonal verbose output]),
[verbose=$withval],
[verbose=""])
AC_CACHE_CHECK([verbose],
[verbose],
[verbose=])
if test "$verbose" = yes; then
AC_DEFINE(OTF_VERBOSE)
fi
])
AC_DEFUN([SWIG_PYTHON],[
#
#enable python bindings
#
AC_ARG_ENABLE([python-bindings],
AC_HELP_STRING([--enable-python-bindings],
[force generation of Python bindings]),
[enable_python_bindings="yes"],
[enable_python_bindings=""])
#
#with python version
#
AC_ARG_WITH([python-version],
AC_HELP_STRING([--with-python-version=VERSION],
[force a custom python version]),
[PYTHON_VERSION=$withval])
#
#only check if the user did --enable-python-bindings
#
if test x"$enable_python_bindings" = xyes; then
#
#test for swig >= 1.3
#
AC_PROG_SWIG(1.3)
#
#test for python-dev
#
AC_PYTHON_DEVEL
test "x$1" != "xno" || swig_shadow=" -noproxy"
#
#set the swig options
#
AC_SUBST([SWIG_PYTHON_OPT],[-python])
#
#set the python compiler flags
#
AC_SUBST([SWIG_PYTHON_CPPFLAGS],[$PYTHON_CPPFLAGS])
fi
])
AC_DEFUN([AC_PYTHON_DEVEL],[
#
# Allow the use of a (user set) custom python version
#
AC_ARG_VAR([PYTHON_VERSION],[The installed Python
version to use, for example '2.3'. This string
will be appended to the Python interpreter
canonical name.])
AC_PATH_PROG([PYTHON],[python[$PYTHON_VERSION]])
if test -z "$PYTHON"; then
AC_MSG_WARN([Cannot find python$PYTHON_VERSION in your system path])
PYTHON_VERSION=""
else
#
# Check for Python include path
#
AC_MSG_CHECKING([for python include path])
if test -z "$PYTHON_CPPFLAGS"; then
python_path=`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_python_inc();" 2> /dev/null`
if test -n "${python_path}"; then
python_path="-I$python_path"
fi
PYTHON_CPPFLAGS=$python_path
fi
if test -n "$PYTHON_CPPFLAGS"; then
AC_MSG_RESULT([$PYTHON_CPPFLAGS])
else
AC_MSG_RESULT([no])
fi
AC_SUBST([PYTHON_CPPFLAGS])
#
# Check for Python library path
#
AC_MSG_CHECKING([for python library path])
if test -z "$PYTHON_LDFLAGS"; then
# (makes two attempts to ensure we've got a version number
# from the interpreter)
py_version=`$PYTHON -c "from distutils.sysconfig import *; \
from string import join; \
print join(get_config_vars('VERSION'))" 2> /dev/null`
if test "$py_version" == "[None]" -o -z "$py_version"; then
if test -n "$PYTHON_VERSION"; then
py_version=$PYTHON_VERSION
else
py_version=`$PYTHON -c "import sys; \
print sys.version[[:3]]"`
fi
fi
PYTHON_LDFLAGS=`$PYTHON -c "from distutils.sysconfig import *; \
from string import join; \
print '-L' + get_python_lib(0,1), \
'-lpython';" 2> /dev/null`$py_version
fi
if test ! "$PYTHON_LDFLAGS" == "$py_version"; then
AC_MSG_RESULT([$PYTHON_LDFLAGS])
else
AC_MSG_RESULT([no])
fi
AC_SUBST([PYTHON_LDFLAGS])
#
# Check for site packages
#
AC_MSG_CHECKING([for python site-packages path])
if test -z "$PYTHON_SITE_PKG"; then
PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \
print distutils.sysconfig.get_python_lib(0,0);" 2> /dev/null`
fi
if test -n "$PYTHON_SITE_PKG"; then
AC_MSG_RESULT([$PYTHON_SITE_PKG])
else
AC_MSG_RESULT([no])
fi
AC_SUBST([PYTHON_SITE_PKG])
#
# libraries which must be linked in when embedding
#
AC_MSG_CHECKING(python extra libraries)
if test -z "$PYTHON_EXTRA_LIBS"; then
PYTHON_EXTRA_LIBS=`$PYTHON -c "import distutils.sysconfig; \
conf = distutils.sysconfig.get_config_var; \
print conf('LOCALMODLIBS'), conf('LIBS')" 2> /dev/null`
fi
if test -n "$PYTHON_EXTRA_LIBS"; then
AC_MSG_RESULT([$PYTHON_EXTRA_LIBS])
else
AC_MSG_RESULT([no])
fi
AC_SUBST(PYTHON_EXTRA_LIBS)
#
# linking flags needed when embedding
#
AC_MSG_CHECKING(python extra linking flags)
if test -z "$PYTHON_EXTRA_LDFLAGS"; then
PYTHON_EXTRA_LDFLAGS=`$PYTHON -c "import distutils.sysconfig; \
conf = distutils.sysconfig.get_config_var; \
print conf('LINKFORSHARED')" 2> /dev/null`
fi
if test -n "$PYTHON_EXTRA_LDFLAGS"; then
AC_MSG_RESULT([$PYTHON_EXTRA_LDFLAGS])
else
AC_MSG_RESULT([no])
fi
AC_SUBST(PYTHON_EXTRA_LDFLAGS)
#
# final check to see if everything compiles alright
#
AC_MSG_CHECKING([consistency of all components of python development environment])
AC_LANG_PUSH([C])
# save current global flags
LIBS="$ac_save_LIBS $PYTHON_LDFLAGS"
CPPFLAGS="$ac_save_CPPFLAGS $PYTHON_CPPFLAGS"
AC_TRY_LINK([
#include <Python.h>
],[
Py_Initialize();
],[pythonexists=yes],[pythonexists=no])
AC_MSG_RESULT([$pythonexists])
if test ! "$pythonexists" = "yes"; then
AC_MSG_ERROR([Cannot find python development environment. You probably have to install the development version of the python package.])
PYTHON_VERSION=""
fi
AC_LANG_POP
# turn back to default flags
CPPFLAGS="$ac_save_CPPFLAGS"
LIBS="$ac_save_LIBS"
#get the paths where to install the package
AC_SUBST([pkgpythondir],
['${prefix}'/lib/python${py_version}/site-packages/otf])
AC_SUBST([pkgpyexecdir],
['${exec_prefix}'/lib/python${py_version}/site-packages/otf])
fi
])
AC_DEFUN([AC_PROG_SWIG],[
AC_PATH_PROG([SWIG],[swig])
if test -z "$SWIG" ; then
AC_MSG_ERROR([Cannot find 'swig' program.])
elif test -n "$1" ; then
AC_MSG_CHECKING([for swig version])
[swig_version=`$SWIG -version 2>&1 | grep 'SWIG Version' | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`]
AC_MSG_RESULT([$swig_version])
if test -n "$swig_version" ; then
# Calculate the required version number components
[required=$1]
[required_major=`echo $required | sed 's/[^0-9].*//'`]
if test -z "$required_major" ; then
[required_major=0]
fi
[required=`echo $required | sed 's/[0-9]*[^0-9]//'`]
[required_minor=`echo $required | sed 's/[^0-9].*//'`]
if test -z "$required_minor" ; then
[required_minor=0]
fi
[required=`echo $required | sed 's/[0-9]*[^0-9]//'`]
[required_patch=`echo $required | sed 's/[^0-9].*//'`]
if test -z "$required_patch" ; then
[required_patch=0]
fi
# Calculate the available version number components
[available=$swig_version]
[available_major=`echo $available | sed 's/[^0-9].*//'`]
if test -z "$available_major" ; then
[available_major=0]
fi
[available=`echo $available | sed 's/[0-9]*[^0-9]//'`]
[available_minor=`echo $available | sed 's/[^0-9].*//'`]
if test -z "$available_minor" ; then
[available_minor=0]
fi
[available=`echo $available | sed 's/[0-9]*[^0-9]//'`]
[available_patch=`echo $available | sed 's/[^0-9].*//'`]
if test -z "$available_patch" ; then
[available_patch=0]
fi
if test $available_major -ne $required_major \
-o $available_minor -ne $required_minor \
-o $available_patch -lt $required_patch ; then
AC_MSG_ERROR([swig version >= $1 is required. You have $swig_version.])
else
swigexists=yes
fi
else
AC_MSG_ERROR([Cannot determine swig version])
fi
fi
])

7440
ompi/contrib/vt/vt/extlib/otf/aclocal.m4 поставляемый Обычный файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

1516
ompi/contrib/vt/vt/extlib/otf/config.guess поставляемый Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

82
ompi/contrib/vt/vt/extlib/otf/config.h.in Обычный файл
Просмотреть файл

@ -0,0 +1,82 @@
/* config.h.in. Generated from configure.in by autoheader. */
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define to 1 if you have the <stddef.h> header file. */
#undef HAVE_STDDEF_H
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define to 1 if you have the `strdup' function. */
#undef HAVE_STRDUP
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/time.h> header file. */
#undef HAVE_SYS_TIME_H
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* */
#undef HAVE_VTF3
/* */
#undef HAVE_ZLIB
/* */
#undef OTF_DEBUG
/* */
#undef OTF_VERBOSE
/* 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 version of this package. */
#undef PACKAGE_VERSION
/* The size of `long', as computed by sizeof. */
#undef SIZEOF_LONG
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Version number of package */
#undef VERSION
/* Define to `unsigned int' if <sys/types.h> does not define. */
#undef size_t

1626
ompi/contrib/vt/vt/extlib/otf/config.sub поставляемый Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

23140
ompi/contrib/vt/vt/extlib/otf/configure поставляемый Исполняемый файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

85
ompi/contrib/vt/vt/extlib/otf/configure.in Обычный файл
Просмотреть файл

@ -0,0 +1,85 @@
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.57)
AC_INIT(OTF, 1.3.9, andreas.knuepfer@tu-dresden.de )
AC_CANONICAL_SYSTEM
AM_INIT_AUTOMAKE(OTF, 1.3.9)
AC_CONFIG_SRCDIR([config.h.in])
AM_CONFIG_HEADER(config.h)
# Checks for programs.
AC_PROG_CXX
AC_PROG_CC
AC_DISABLE_SHARED
AC_PROG_LIBTOOL
# Own stuff
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)
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)
AM_CONDITIONAL(AMDEPZLIB, test x"$have_zlib" = xyes -a x"$enable_shared" = xyes)
#checking for swig and python-dev
SWIG_PYTHON
AM_CONDITIONAL(AMHAVEPYTHONSWIG, [test "$pythonexists" = yes -a "$swigexists" = yes] )
WITH_DEBUG
WITH_VERBOSE
# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([stddef.h stdlib.h string.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_FUNCS([strdup])
# 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_TYPE_SIZE_T
#AC_HEADER_TIME
# Checks for library functions.
# AC_FUNC_FSEEKO
#AC_FUNC_MALLOC
#AC_FUNC_REALLOC
#AC_FUNC_STAT
#AC_CHECK_FUNCS([gettimeofday memmove strdup])
# Checks for datatype sizes.
AC_CHECK_SIZEOF(long, 8)
sizeof_long=$ac_cv_sizeof_long
AC_SUBST([sizeof_long])
AC_CONFIG_FILES([Makefile
tools/Makefile
tools/otfdump/Makefile
tools/otfmerge/Makefile
tools/vtf2otf/Makefile
tools/otf2vtf/Makefile
tools/otfaux/Makefile
otflib/Makefile
otflib_py/Makefile
otflib/OTF_inttypes.h
tools/otfcompress/Makefile
tools/otfconfig/Makefile
])
# tools/otfdump/Makefile
## workaround for stupid warning caused by newer autoconf versions
AC_DEFUN([AC_DATAROOTDIR_CHECKED])
AC_OUTPUT

584
ompi/contrib/vt/vt/extlib/otf/depcomp Исполняемый файл
Просмотреть файл

@ -0,0 +1,584 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
scriptversion=2006-10-15.18
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 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, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
case $1 in
'')
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
Run PROGRAMS ARGS to compile a file, generating dependencies
as side-effects.
Environment variables:
depmode Dependency tracking mode.
source Source file read by `PROGRAMS ARGS'.
object Object file output by `PROGRAMS ARGS'.
DEPDIR directory where to store dependencies.
depfile Dependency file to output.
tmpdepfile Temporary file to use when outputing dependencies.
libtool Whether libtool is used (yes/no).
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "depcomp $scriptversion"
exit $?
;;
esac
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
exit 1
fi
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
depfile=${depfile-`echo "$object" |
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile"
# Some modes work just like other modes, but use different flags. We
# parameterize here, but still list the modes in the big case below,
# to make depend.m4 easier to write. Note that we *cannot* use a case
# here, because this file can only contain one case statement.
if test "$depmode" = hp; then
# HP compiler uses -M and no extra arg.
gccflag=-M
depmode=gcc
fi
if test "$depmode" = dashXmstdout; then
# This is just like dashmstdout with a different argument.
dashmflag=-xM
depmode=dashmstdout
fi
case "$depmode" in
gcc3)
## gcc 3 implements dependency tracking that does exactly what
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
## it if -MD -MP comes after the -MF stuff. Hmm.
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
## the command line argument order; so add the flags where they
## appear in depend2.am. Note that the slowdown incurred here
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
for arg
do
case $arg in
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
*) set fnord "$@" "$arg" ;;
esac
shift # fnord
shift # $arg
done
"$@"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
mv "$tmpdepfile" "$depfile"
;;
gcc)
## There are various ways to get dependency output from gcc. Here's
## why we pick this rather obscure method:
## - Don't want to use -MD because we'd like the dependencies to end
## up in a subdir. Having to rename by hand is ugly.
## (We might end up doing this anyway to support other compilers.)
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
## -MM, not -M (despite what the docs say).
## - Using -M directly means running the compiler twice (even worse
## than renaming).
if test -z "$gccflag"; then
gccflag=-MD,
fi
"$@" -Wp,"$gccflag$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
## The second -e expression handles DOS-style file names with drive letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
## This next piece of magic avoids the `deleted header file' problem.
## The problem is that when a header file which appears in a .P file
## is deleted, the dependency causes make to die (because there is
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
tr ' ' '
' < "$tmpdepfile" |
## Some versions of gcc put a space before the `:'. On the theory
## that the space means something, we add a space to the output as
## well.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
sgi)
if test "$libtool" = yes; then
"$@" "-Wp,-MDupdate,$tmpdepfile"
else
"$@" -MDupdate "$tmpdepfile"
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
echo "$object : \\" > "$depfile"
# Clip off the initial element (the dependent). Don't try to be
# clever and replace this with sed code, as IRIX sed won't handle
# lines with more than a fixed number of characters (4096 in
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
# the IRIX cc adds comments like `#:fec' to the end of the
# dependency line.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
tr '
' ' ' >> $depfile
echo >> $depfile
# The second pass generates a dummy entry for each header file.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
>> $depfile
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
# in a .u file. In older versions, this file always lives in the
# current directory. Also, the AIX compiler puts `$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
tmpdepfile="$stripped.u"
if test "$libtool" = yes; then
"$@" -Wc,-M
else
"$@" -M
fi
stat=$?
if test -f "$tmpdepfile"; then :
else
stripped=`echo "$stripped" | sed 's,^.*/,,'`
tmpdepfile="$stripped.u"
fi
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
if test -f "$tmpdepfile"; then
outname="$stripped.o"
# Each line is of the form `foo.o: dependent.h'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
icc)
# Intel's C compiler understands `-MD -MF file'. However on
# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
# ICC 7.0 will fill foo.d with something like
# foo.o: sub/foo.c
# foo.o: sub/foo.h
# which is wrong. We want:
# sub/foo.o: sub/foo.c
# sub/foo.o: sub/foo.h
# sub/foo.c:
# sub/foo.h:
# ICC 7.1 will output
# foo.o: sub/foo.c sub/foo.h
# and will wrap long lines using \ :
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
"$@" -MD -MF "$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
# Each line is of the form `foo.o: dependent.h',
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process this invocation
# correctly. Breaking it into two sed invocations is a workaround.
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp2)
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
# compilers, which have integrated preprocessors. The correct option
# to use with these is +Maked; it writes dependencies to a file named
# 'foo.d', which lands next to the object file, wherever that
# happens to be.
# Much of this is similar to the tru64 case; see comments there.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir.libs/$base.d
"$@" -Wc,+Maked
else
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir$base.d
"$@" +Maked
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
# Add `dependent.h:' lines.
sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile" "$tmpdepfile2"
;;
tru64)
# The Tru64 compiler uses -MD to generate dependencies as a side
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
# dependencies in `foo.d' instead, so we check for that too.
# Subdirectories are respected.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
# With Tru64 cc, shared objects can also be used to make a
# static library. This mechanism is used in libtool 1.4 series to
# handle both shared and static libraries in a single compilation.
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
#
# With libtool 1.5 this exception was removed, and libtool now
# generates 2 separate objects for the 2 libraries. These two
# compilations output dependencies in $dir.libs/$base.o.d and
# in $dir$base.o.d. We have to check for both files, because
# one of the two compilations can be disabled. We should prefer
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
# automatically cleaned when .libs/ is deleted, while ignoring
# the former would cause a distcleancheck panic.
tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
tmpdepfile2=$dir$base.o.d # libtool 1.5
tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
"$@" -Wc,-MD
else
tmpdepfile1=$dir$base.o.d
tmpdepfile2=$dir$base.d
tmpdepfile3=$dir$base.d
tmpdepfile4=$dir$base.d
"$@" -MD
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
# That's a tab and a space in the [].
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
#nosideeffect)
# This comment above is used by automake to tell side-effect
# dependency tracking mechanisms from slower ones.
dashmstdout)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout, regardless of -o.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test $1 != '--mode=compile'; do
shift
done
shift
fi
# Remove `-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
test -z "$dashmflag" && dashmflag=-M
# Require at least two characters before searching for `:'
# in the target name. This is to cope with DOS-style filenames:
# a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
"$@" $dashmflag |
sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
tr ' ' '
' < "$tmpdepfile" | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
dashXmstdout)
# This case only exists to satisfy depend.m4. It is never actually
# run, as this mode is specially recognized in the preamble.
exit 1
;;
makedepend)
"$@" || exit $?
# Remove any Libtool call
if test "$libtool" = yes; then
while test $1 != '--mode=compile'; do
shift
done
shift
fi
# X makedepend
shift
cleared=no
for arg in "$@"; do
case $cleared in
no)
set ""; shift
cleared=yes ;;
esac
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.
-*|$object)
;;
*)
set fnord "$@" "$arg"; shift ;;
esac
done
obj_suffix="`echo $object | sed 's/^.*\././'`"
touch "$tmpdepfile"
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
sed '1,2d' "$tmpdepfile" | tr ' ' '
' | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile" "$tmpdepfile".bak
;;
cpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test $1 != '--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, regardless of -o,
# because we must use -o when running libtool.
"$@" || exit $?
IFS=" "
for arg
do
case "$arg" in
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
set fnord "$@"
shift
shift
;;
*)
set fnord "$@" "$arg"
shift
shift
;;
esac
done
"$@" -E |
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
echo " " >> "$depfile"
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
rm -f "$tmpdepfile"
;;
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-end: "$"
# End:

Двоичные данные
ompi/contrib/vt/vt/extlib/otf/docu/api/specification.pdf Обычный файл

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1,946 @@
# 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 <filter> <input-file>, where <filter>
# is the value of the INPUT_FILTER tag, and <input-file> 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 =

Двоичные данные
ompi/contrib/vt/vt/extlib/otf/docu/tools/otftools.pdf Обычный файл

Двоичный файл не отображается.

507
ompi/contrib/vt/vt/extlib/otf/install-sh Исполняемый файл
Просмотреть файл

@ -0,0 +1,507 @@
#!/bin/sh
# install - install a program, script, or datafile
scriptversion=2006-10-14.15
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# following copyright and license.
#
# Copyright (C) 1994 X Consortium
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name of the X Consortium shall not
# be used in advertising or otherwise to promote the sale, use or other deal-
# ings in this Software without prior written authorization from the X Consor-
# tium.
#
#
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# `make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch.
nl='
'
IFS=" "" $nl"
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit="${DOITPROG-}"
if test -z "$doit"; then
doit_exec=exec
else
doit_exec=$doit
fi
# Put in absolute file names if you don't have them in your path;
# or use environment vars.
mvprog="${MVPROG-mv}"
cpprog="${CPPROG-cp}"
chmodprog="${CHMODPROG-chmod}"
chownprog="${CHOWNPROG-chown}"
chgrpprog="${CHGRPPROG-chgrp}"
stripprog="${STRIPPROG-strip}"
rmprog="${RMPROG-rm}"
mkdirprog="${MKDIRPROG-mkdir}"
posix_glob=
posix_mkdir=
# Desired mode of installed file.
mode=0755
chmodcmd=$chmodprog
chowncmd=
chgrpcmd=
stripcmd=
rmcmd="$rmprog -f"
mvcmd="$mvprog"
src=
dst=
dir_arg=
dstarg=
no_target_directory=
usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
or: $0 [OPTION]... SRCFILES... DIRECTORY
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
or: $0 [OPTION]... -d DIRECTORIES...
In the 1st form, copy SRCFILE to DSTFILE.
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
In the 4th, create DIRECTORIES.
Options:
-c (ignored)
-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.
--help display this help and exit.
--version display version info and exit.
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
"
while test $# -ne 0; do
case $1 in
-c) shift
continue;;
-d) dir_arg=true
shift
continue;;
-g) chgrpcmd="$chgrpprog $2"
shift
shift
continue;;
--help) echo "$usage"; exit $?;;
-m) mode=$2
shift
shift
case $mode in
*' '* | *' '* | *'
'* | *'*'* | *'?'* | *'['*)
echo "$0: invalid mode: $mode" >&2
exit 1;;
esac
continue;;
-o) chowncmd="$chownprog $2"
shift
shift
continue;;
-s) stripcmd=$stripprog
shift
continue;;
-t) dstarg=$2
shift
shift
continue;;
-T) no_target_directory=true
shift
continue;;
--version) echo "$0 $scriptversion"; exit $?;;
--) shift
break;;
-*) echo "$0: invalid option: $1" >&2
exit 1;;
*) break;;
esac
done
if test $# -ne 0 && test -z "$dir_arg$dstarg"; 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 "$dstarg"; then
# $@ is not empty: it contains at least $arg.
set fnord "$@" "$dstarg"
shift # fnord
fi
shift # arg
dstarg=$arg
done
fi
if test $# -eq 0; then
if test -z "$dir_arg"; then
echo "$0: no input file specified." >&2
exit 1
fi
# It's OK to call `install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
if test -z "$dir_arg"; then
trap '(exit $?); exit' 1 2 13 15
# Set umask so as not to create temps with too-generous modes.
# However, 'strip' requires both read and write access to temps.
case $mode in
# Optimize common cases.
*644) cp_umask=133;;
*755) cp_umask=22;;
*[0-7])
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw='% 200'
fi
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
*)
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw=,u+rw
fi
cp_umask=$mode$u_plus_rw;;
esac
fi
for src
do
# Protect names starting with `-'.
case $src in
-*) src=./$src ;;
esac
if test -n "$dir_arg"; then
dst=$src
dstdir=$dst
test -d "$dstdir"
dstdir_status=$?
else
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if test ! -f "$src" && test ! -d "$src"; then
echo "$0: $src does not exist." >&2
exit 1
fi
if test -z "$dstarg"; then
echo "$0: no destination specified." >&2
exit 1
fi
dst=$dstarg
# Protect names starting with `-'.
case $dst in
-*) dst=./$dst ;;
esac
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
if test -n "$no_target_directory"; then
echo "$0: $dstarg: Is a directory" >&2
exit 1
fi
dstdir=$dst
dst=$dstdir/`basename "$src"`
dstdir_status=0
else
# Prefer dirname, but fall back on a substitute if dirname fails.
dstdir=`
(dirname "$dst") 2>/dev/null ||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$dst" : 'X\(//\)[^/]' \| \
X"$dst" : 'X\(//\)$' \| \
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
echo X"$dst" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q'
`
test -d "$dstdir"
dstdir_status=$?
fi
fi
obsolete_mkdir_used=false
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
# Create intermediate dirs using mode 755 as modified by the umask.
# This is like FreeBSD 'install' as of 1997-10-28.
umask=`umask`
case $stripcmd.$umask in
# Optimize common cases.
*[2367][2367]) mkdir_umask=$umask;;
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
*[0-7])
mkdir_umask=`expr $umask + 22 \
- $umask % 100 % 40 + $umask % 20 \
- $umask % 10 % 4 + $umask % 2
`;;
*) mkdir_umask=$umask,go-w;;
esac
# With -d, create the new directory with the user-specified mode.
# Otherwise, rely on $mkdir_umask.
if test -n "$dir_arg"; then
mkdir_mode=-m$mode
else
mkdir_mode=
fi
posix_mkdir=false
case $umask in
*[123567][0-7][0-7])
# POSIX mkdir -p sets u+wx bits regardless of umask, which
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
;;
*)
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
if (umask $mkdir_umask &&
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
then
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
# other-writeable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
ls_ld_tmpdir=`ls -ld "$tmpdir"`
case $ls_ld_tmpdir in
d????-?r-*) different_mode=700;;
d????-?--*) different_mode=755;;
*) false;;
esac &&
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
}
}
then posix_mkdir=:
fi
rmdir "$tmpdir/d" "$tmpdir"
else
# Remove any dirs left behind by ancient mkdir implementations.
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
fi
trap '' 0;;
esac;;
esac
if
$posix_mkdir && (
umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
)
then :
else
# The umask is ridiculous, or mkdir does not conform to POSIX,
# or it failed possibly due to a race condition. Create the
# directory the slow way, step by step, checking for races as we go.
case $dstdir in
/*) prefix=/ ;;
-*) prefix=./ ;;
*) prefix= ;;
esac
case $posix_glob in
'')
if (set -f) 2>/dev/null; then
posix_glob=true
else
posix_glob=false
fi ;;
esac
oIFS=$IFS
IFS=/
$posix_glob && set -f
set fnord $dstdir
shift
$posix_glob && set +f
IFS=$oIFS
prefixes=
for d
do
test -z "$d" && continue
prefix=$prefix$d
if test -d "$prefix"; then
prefixes=
else
if $posix_mkdir; then
(umask=$mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
# Don't fail if two instances are running concurrently.
test -d "$prefix" || exit 1
else
case $prefix in
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
*) qprefix=$prefix;;
esac
prefixes="$prefixes '$qprefix'"
fi
fi
prefix=$prefix/
done
if test -n "$prefixes"; then
# Don't fail if two instances are running concurrently.
(umask $mkdir_umask &&
eval "\$doit_exec \$mkdirprog $prefixes") ||
test -d "$dstdir" || exit 1
obsolete_mkdir_used=true
fi
fi
fi
if test -n "$dir_arg"; then
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
else
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/_inst.$$_
rmtmp=$dstdir/_rm.$$_
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
# Copy the file name to the temp name.
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $cpprog $src $dsttmp" command.
#
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
&& { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
&& { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
# Now 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.
{
if test -f "$dst"; then
$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
}
else
:
fi
} &&
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dst"
}
} || 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-end: "$"
# End:

6930
ompi/contrib/vt/vt/extlib/otf/ltmain.sh Обычный файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

367
ompi/contrib/vt/vt/extlib/otf/missing Исполняемый файл
Просмотреть файл

@ -0,0 +1,367 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
scriptversion=2006-05-10.23
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
# Free Software Foundation, Inc.
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
if test $# -eq 0; then
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
fi
run=:
sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
# In the cases where this matters, `missing' is being run in the
# srcdir already.
if test -f configure.ac; then
configure_ac=configure.ac
else
configure_ac=configure.in
fi
msg="missing on your system"
case $1 in
--run)
# Try to run requested program, and just exit if it succeeds.
run=
shift
"$@" && exit 0
# Exit code 63 means version mismatch. This often happens
# when the user try to use an ancient version of a tool on
# a file that requires a minimum version. In this case we
# we should proceed has if the program had been absent, or
# if --run hadn't been passed.
if test $? = 63; then
run=:
msg="probably too old"
fi
;;
-h|--h|--he|--hel|--help)
echo "\
$0 [OPTION]... PROGRAM [ARGUMENT]...
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
error status if there is no known handling for PROGRAM.
Options:
-h, --help display this help and exit
-v, --version output version information and exit
--run try to run the given command, and emulate it if it fails
Supported PROGRAM values:
aclocal touch file \`aclocal.m4'
autoconf touch file \`configure'
autoheader touch file \`config.h.in'
autom4te touch the output file, or create a stub one
automake touch all \`Makefile.in' files
bison create \`y.tab.[ch]', if possible, from existing .[ch]
flex create \`lex.yy.c', if possible, from existing .c
help2man touch the output file
lex create \`lex.yy.c', if possible, from existing .c
makeinfo touch the output file
tar try tar, gnutar, gtar, then tar without non-portable flags
yacc create \`y.tab.[ch]', if possible, from existing .[ch]
Send bug reports to <bug-automake@gnu.org>."
exit $?
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
echo "missing $scriptversion (GNU Automake)"
exit $?
;;
-*)
echo 1>&2 "$0: Unknown \`$1' option"
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
;;
esac
# Now exit if we have it, but it failed. Also exit now if we
# don't have it and --version was passed (most likely to detect
# the program).
case $1 in
lex|yacc)
# Not GNU programs, they don't have --version.
;;
tar)
if test -n "$run"; then
echo 1>&2 "ERROR: \`tar' requires --run"
exit 1
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
exit 1
fi
;;
*)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
exit 1
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
# Could not run --version or --help. This is probably someone
# running `$TOOL --version' or `$TOOL --help' to check whether
# $TOOL exists and not knowing $TOOL uses missing.
exit 1
fi
;;
esac
# If it does not exist, or fails to run (possibly an outdated version),
# try to emulate it.
case $1 in
aclocal*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
to install the \`Automake' and \`Perl' packages. Grab them from
any GNU archive site."
touch aclocal.m4
;;
autoconf)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`${configure_ac}'. You might want to install the
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
archive site."
touch configure
;;
autoheader)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`acconfig.h' or \`${configure_ac}'. You might want
to install the \`Autoconf' and \`GNU m4' packages. Grab them
from any GNU archive site."
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
test -z "$files" && files="config.h"
touch_files=
for f in $files; do
case $f in
*:*) touch_files="$touch_files "`echo "$f" |
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
*) touch_files="$touch_files $f.in";;
esac
done
touch $touch_files
;;
automake*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
You might want to install the \`Automake' and \`Perl' packages.
Grab them from any GNU archive site."
find . -type f -name Makefile.am -print |
sed 's/\.am$/.in/' |
while read f; do touch "$f"; done
;;
autom4te)
echo 1>&2 "\
WARNING: \`$1' is needed, but is $msg.
You might have modified some files without having the
proper tools for further handling them.
You can get \`$1' as part of \`Autoconf' from any GNU
archive site."
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -f "$file"; then
touch $file
else
test -z "$file" || exec >$file
echo "#! /bin/sh"
echo "# Created by GNU Automake missing as a replacement of"
echo "# $ $@"
echo "exit 0"
chmod +x $file
exit 1
fi
;;
bison|yacc)
echo 1>&2 "\
WARNING: \`$1' $msg. You should only need it if
you modified a \`.y' file. You may need the \`Bison' package
in order for those modifications to take effect. You can get
\`Bison' from any GNU archive site."
rm -f y.tab.c y.tab.h
if test $# -ne 1; then
eval LASTARG="\${$#}"
case $LASTARG in
*.y)
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" y.tab.c
fi
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" y.tab.h
fi
;;
esac
fi
if test ! -f y.tab.h; then
echo >y.tab.h
fi
if test ! -f y.tab.c; then
echo 'main() { return 0; }' >y.tab.c
fi
;;
lex|flex)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a \`.l' file. You may need the \`Flex' package
in order for those modifications to take effect. You can get
\`Flex' from any GNU archive site."
rm -f lex.yy.c
if test $# -ne 1; then
eval LASTARG="\${$#}"
case $LASTARG in
*.l)
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" lex.yy.c
fi
;;
esac
fi
if test ! -f lex.yy.c; then
echo 'main() { return 0; }' >lex.yy.c
fi
;;
help2man)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a dependency of a manual page. You may need the
\`Help2man' package in order for those modifications to take
effect. You can get \`Help2man' from any GNU archive site."
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -f "$file"; then
touch $file
else
test -z "$file" || exec >$file
echo ".ab help2man is required to generate this page"
exit 1
fi
;;
makeinfo)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a \`.texi' or \`.texinfo' file, or any other file
indirectly affecting the aspect of the manual. The spurious
call might also be the consequence of using a buggy \`make' (AIX,
DU, IRIX). You might want to install the \`Texinfo' package or
the \`GNU make' package. Grab either from any GNU archive site."
# The file to touch is that specified with -o ...
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -z "$file"; then
# ... or it is the one specified with @setfilename ...
infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
file=`sed -n '
/^@setfilename/{
s/.* \([^ ]*\) *$/\1/
p
q
}' $infile`
# ... or it is derived from the source name (dir/f.texi becomes f.info)
test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
fi
# If the file does not exist, the user really needs makeinfo;
# let's fail without touching anything.
test -f $file || exit 1
touch $file
;;
tar)
shift
# We have already tried tar in the generic part.
# Look for gnutar/gtar before invocation to avoid ugly error
# messages.
if (gnutar --version > /dev/null 2>&1); then
gnutar "$@" && exit 0
fi
if (gtar --version > /dev/null 2>&1); then
gtar "$@" && exit 0
fi
firstarg="$1"
if shift; then
case $firstarg in
*o*)
firstarg=`echo "$firstarg" | sed s/o//`
tar "$firstarg" "$@" && exit 0
;;
esac
case $firstarg in
*h*)
firstarg=`echo "$firstarg" | sed s/h//`
tar "$firstarg" "$@" && exit 0
;;
esac
fi
echo 1>&2 "\
WARNING: I can't seem to be able to run \`tar' with the given arguments.
You may want to install GNU tar or Free paxutils, or check the
command line arguments."
exit 1
;;
*)
echo 1>&2 "\
WARNING: \`$1' is needed, and is $msg.
You might have modified some files without having the
proper tools for further handling them. Check the \`README' file,
it often tells you about the needed prerequisites for installing
this package. You may also peek at any GNU archive site, in case
some other package would contain this missing \`$1' program."
exit 1
;;
esac
exit 0
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:

56
ompi/contrib/vt/vt/extlib/otf/otf_vc05.sln Обычный файл
Просмотреть файл

@ -0,0 +1,56 @@

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libotf", "otflib\libotf_vs05.vcproj", "{6B9B49C9-75CD-400D-B736-5EACA04D0A82}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "otfaux", "tools\otfaux\otfaux_vs05.vcproj", "{24587836-ED5E-49DF-A7AD-419FDC208C08}"
ProjectSection(ProjectDependencies) = postProject
{6B9B49C9-75CD-400D-B736-5EACA04D0A82} = {6B9B49C9-75CD-400D-B736-5EACA04D0A82}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "otfcompress", "tools\otfcompress\otfcompress_vs05.vcproj", "{B6BBC220-1492-4BEA-A299-9D062133ABAA}"
ProjectSection(ProjectDependencies) = postProject
{6B9B49C9-75CD-400D-B736-5EACA04D0A82} = {6B9B49C9-75CD-400D-B736-5EACA04D0A82}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "otfdump", "tools\otfdump\otfdump_vs05.vcproj", "{508A823C-8EAB-4C56-9DFE-4D85B0D24491}"
ProjectSection(ProjectDependencies) = postProject
{6B9B49C9-75CD-400D-B736-5EACA04D0A82} = {6B9B49C9-75CD-400D-B736-5EACA04D0A82}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "otfmerge", "tools\otfmerge\otfmerge_vs05.vcproj", "{1B9223C8-DE20-4538-8214-776C6017D22B}"
ProjectSection(ProjectDependencies) = postProject
{6B9B49C9-75CD-400D-B736-5EACA04D0A82} = {6B9B49C9-75CD-400D-B736-5EACA04D0A82}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
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}.Release|Win32.ActiveCfg = Release|Win32
{6B9B49C9-75CD-400D-B736-5EACA04D0A82}.Release|Win32.Build.0 = Release|Win32
{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}.Release|Win32.ActiveCfg = Release|Win32
{24587836-ED5E-49DF-A7AD-419FDC208C08}.Release|Win32.Build.0 = Release|Win32
{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}.Release|Win32.ActiveCfg = Release|Win32
{B6BBC220-1492-4BEA-A299-9D062133ABAA}.Release|Win32.Build.0 = Release|Win32
{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}.Release|Win32.ActiveCfg = Release|Win32
{508A823C-8EAB-4C56-9DFE-4D85B0D24491}.Release|Win32.Build.0 = Release|Win32
{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}.Release|Win32.ActiveCfg = Release|Win32
{1B9223C8-DE20-4538-8214-776C6017D22B}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

Просмотреть файл

@ -0,0 +1,53 @@
INCLUDES = $(ZLIB_INCLUDE_LINE)
if AMDEPZLIB
LIBS += $(ZLIB_LIB_LINE)
endif
include_HEADERS = otf.h \
OTF_CopyHandler.h \
OTF_Definitions.h \
OTF_File.h \
OTF_FileManager.h \
OTF_Filenames.h \
OTF_HandlerArray.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.h
noinst_HEADERS = OTF_Keywords.h \
OTF_Parse.h \
OTF_Platform.h
lib_LTLIBRARIES = libotf.la
libotf_la_SOURCES = \
OTF_CopyHandler.c \
OTF_File.c \
OTF_FileManager.c \
OTF_Filenames.c \
OTF_HandlerArray.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 = \
libotf_vs05.vcproj
.PHONY: doc
doc:
doxygen

Просмотреть файл

@ -0,0 +1,600 @@
# Makefile.in generated by automake 1.10 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006 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@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@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@
@AMDEPZLIB_TRUE@am__append_1 = $(ZLIB_LIB_LINE)
subdir = otflib
DIST_COMMON = $(include_HEADERS) $(noinst_HEADERS) \
$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
$(srcdir)/OTF_inttypes.h.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES = OTF_inttypes.h
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" \
"$(DESTDIR)$(includedir)"
libLTLIBRARIES_INSTALL = $(INSTALL)
LTLIBRARIES = $(lib_LTLIBRARIES)
libotf_la_LIBADD =
am_libotf_la_OBJECTS = OTF_CopyHandler.lo OTF_File.lo \
OTF_FileManager.lo OTF_Filenames.lo OTF_HandlerArray.lo \
OTF_MasterControl.lo OTF_Parse.lo OTF_Platform.lo \
OTF_RBuffer.lo OTF_Reader.lo OTF_RStream.lo OTF_WBuffer.lo \
OTF_Writer.lo OTF_WStream.lo OTF_inttypes.lo
libotf_la_OBJECTS = $(am_libotf_la_OBJECTS)
DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
$(LDFLAGS) -o $@
SOURCES = $(libotf_la_SOURCES)
DIST_SOURCES = $(libotf_la_SOURCES)
includeHEADERS_INSTALL = $(INSTALL_HEADER)
nodist_includeHEADERS_INSTALL = $(INSTALL_HEADER)
HEADERS = $(include_HEADERS) $(nodist_include_HEADERS) \
$(noinst_HEADERS)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
F77 = @F77@
FFLAGS = @FFLAGS@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@ $(am__append_1)
LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PYTHON = @PYTHON@
PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@
PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@
PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@
PYTHON_LDFLAGS = @PYTHON_LDFLAGS@
PYTHON_SITE_PKG = @PYTHON_SITE_PKG@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
SWIG = @SWIG@
SWIG_PYTHON_CPPFLAGS = @SWIG_PYTHON_CPPFLAGS@
SWIG_PYTHON_OPT = @SWIG_PYTHON_OPT@
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@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
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@
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@
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_builddir = @top_builddir@
top_srcdir = @top_srcdir@
INCLUDES = $(ZLIB_INCLUDE_LINE)
include_HEADERS = otf.h \
OTF_CopyHandler.h \
OTF_Definitions.h \
OTF_File.h \
OTF_FileManager.h \
OTF_Filenames.h \
OTF_HandlerArray.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.h
noinst_HEADERS = OTF_Keywords.h \
OTF_Parse.h \
OTF_Platform.h
lib_LTLIBRARIES = libotf.la
libotf_la_SOURCES = \
OTF_CopyHandler.c \
OTF_File.c \
OTF_FileManager.c \
OTF_Filenames.c \
OTF_HandlerArray.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 = \
libotf_vs05.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 \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu otflib/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu otflib/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
OTF_inttypes.h: $(top_builddir)/config.status $(srcdir)/OTF_inttypes.h.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
@$(NORMAL_INSTALL)
test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
if test -f $$p; then \
f=$(am__strip_dir) \
echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
$(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
else :; fi; \
done
uninstall-libLTLIBRARIES:
@$(NORMAL_UNINSTALL)
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
p=$(am__strip_dir) \
echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
$(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
done
clean-libLTLIBRARIES:
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
test "$$dir" != "$$p" || dir=.; \
echo "rm -f \"$${dir}/so_locations\""; \
rm -f "$${dir}/so_locations"; \
done
libotf.la: $(libotf_la_OBJECTS) $(libotf_la_DEPENDENCIES)
$(LINK) -rpath $(libdir) $(libotf_la_OBJECTS) $(libotf_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OTF_CopyHandler.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OTF_File.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OTF_FileManager.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OTF_Filenames.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OTF_HandlerArray.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OTF_MasterControl.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OTF_Parse.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OTF_Platform.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OTF_RBuffer.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OTF_RStream.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OTF_Reader.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OTF_WBuffer.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OTF_WStream.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OTF_Writer.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OTF_inttypes.Plo@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
install-includeHEADERS: $(include_HEADERS)
@$(NORMAL_INSTALL)
test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
@list='$(include_HEADERS)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \
$(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \
done
uninstall-includeHEADERS:
@$(NORMAL_UNINSTALL)
@list='$(include_HEADERS)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \
rm -f "$(DESTDIR)$(includedir)/$$f"; \
done
install-nodist_includeHEADERS: $(nodist_include_HEADERS)
@$(NORMAL_INSTALL)
test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
@list='$(nodist_include_HEADERS)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(nodist_includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \
$(nodist_includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \
done
uninstall-nodist_includeHEADERS:
@$(NORMAL_UNINSTALL)
@list='$(nodist_include_HEADERS)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \
rm -f "$(DESTDIR)$(includedir)/$$f"; \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$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:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
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
info: info-am
info-am:
install-data-am: install-includeHEADERS install-nodist_includeHEADERS
install-dvi: install-dvi-am
install-exec-am: install-libLTLIBRARIES
install-html: install-html-am
install-info: install-info-am
install-man:
install-pdf: install-pdf-am
install-ps: 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 all all-am check check-am clean clean-generic \
clean-libLTLIBRARIES clean-libtool ctags distclean \
distclean-compile distclean-generic distclean-libtool \
distclean-tags distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-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 uninstall uninstall-am uninstall-includeHEADERS \
uninstall-libLTLIBRARIES uninstall-nodist_includeHEADERS
.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:

Просмотреть файл

@ -0,0 +1,364 @@
/*
This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2007.
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 ) {
return ( 0 == OTF_Writer_writeDefinitionComment( (OTF_Writer*)userData, stream,
comment ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK;
}
int OTF_CopyHandler_DefTimerResolution( void* userData,
uint32_t stream, uint64_t ticksPerSecond ) {
return ( 0 == OTF_Writer_writeDefTimerResolution( (OTF_Writer*)userData, stream,
ticksPerSecond ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK;
}
int OTF_CopyHandler_DefProcess( void* userData, uint32_t stream,
uint32_t deftoken, const char* name, uint32_t parent ) {
return ( 0 == OTF_Writer_writeDefProcess( (OTF_Writer*)userData, stream,
deftoken, name, parent ) ) ? 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 ) {
return ( 0 == OTF_Writer_writeDefProcessGroup( (OTF_Writer*)userData, stream, deftoken,
name, n, procs ) ) ? 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 ) {
return ( 0 == OTF_Writer_writeDefFunction( (OTF_Writer*)userData, stream, deftoken,
name, group, scltoken ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK;
}
int OTF_CopyHandler_DefFunctionGroup( void* userData, uint32_t stream,
uint32_t deftoken, const char* name ) {
return ( 0 == OTF_Writer_writeDefFunctionGroup( (OTF_Writer*)userData, stream,
deftoken, name ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK;
}
int OTF_CopyHandler_DefCollectiveOperation( void* userData, uint32_t stream,
uint32_t collOp, const char* name, uint32_t type ) {
return ( 0 == OTF_Writer_writeDefCollectiveOperation( (OTF_Writer*)userData, stream,
collOp, name, type ) ) ? 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 ) {
return ( 0 == OTF_Writer_writeDefCounter( (OTF_Writer*)userData, stream,
deftoken, name, properties, countergroup, unit ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK;
}
int OTF_CopyHandler_DefCounterGroup( void* userData, uint32_t stream,
uint32_t deftoken, const char* name ) {
return ( 0 == OTF_Writer_writeDefCounterGroup( (OTF_Writer*)userData, stream,
deftoken, name ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK;
}
int OTF_CopyHandler_DefScl( void* userData, uint32_t stream,
uint32_t deftoken, uint32_t sclfile, uint32_t sclline ) {
return ( 0 == OTF_Writer_writeDefScl( (OTF_Writer*)userData, stream, deftoken,
sclfile, sclline ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK;
}
int OTF_CopyHandler_DefSclFile( void* userData, uint32_t stream,
uint32_t deftoken, const char* filename ) {
return ( 0 == OTF_Writer_writeDefSclFile( (OTF_Writer*)userData, stream,
deftoken, filename ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK;
}
int OTF_CopyHandler_DefVersion( void* userData, uint32_t stream,
uint8_t major, uint8_t minor, uint8_t sub, const char* string ) {
/* version is writen implicitly */
return OTF_RETURN_OK; /* success */
}
int OTF_CopyHandler_DefCreator( void* userData, uint32_t stream,
const char* creator ) {
return ( 0 == OTF_Writer_writeDefCreator( (OTF_Writer*)userData, stream, creator )
) ? OTF_RETURN_ABORT : OTF_RETURN_OK;
}
int OTF_CopyHandler_DefFile( void* userData, uint32_t stream, uint32_t token,
const char* name, uint32_t group ) {
return ( 0 == OTF_Writer_writeDefFile( (OTF_Writer*)userData, stream, token,
name, group ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK;
}
int OTF_CopyHandler_DefFileGroup( void* userData, uint32_t stream,
uint32_t token, const char* name ) {
return ( 0 == OTF_Writer_writeDefFileGroup( (OTF_Writer*)userData, stream, token,
name ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK;
}
/* *** Event handlers *** ****************************************** */
int OTF_CopyHandler_EventComment( void* userData, uint64_t time, uint32_t process,
const char* comment ) {
return ( 0 == OTF_Writer_writeEventComment( (OTF_Writer*)userData, time,
process, comment ) ) ? 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 ) {
return ( 0 == OTF_Writer_writeCounter( (OTF_Writer*)userData, time,
process, counter_token, value ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK;
}
int OTF_CopyHandler_Enter( void* userData, uint64_t time,
uint32_t statetoken, uint32_t cpuid, uint32_t scltoken ) {
return ( 0 == OTF_Writer_writeEnter( (OTF_Writer*)userData, time,
statetoken, cpuid, scltoken ) ) ? 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 ) {
return ( 0 == OTF_Writer_writeCollectiveOperation( (OTF_Writer*)userData, time,
process, functionToken, communicator, rootprocess,
sent, received, duration, scltoken ) ) ? 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 ) {
return ( 0 == OTF_Writer_writeRecvMsg( (OTF_Writer*)userData, time, receiver,
sender, communicator, msgtype, msglength, scltoken ) ) ? 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 ) {
return ( 0 == OTF_Writer_writeSendMsg( (OTF_Writer*)userData, time, sender,
receiver, communicator, msgtype, msglength, scltoken ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK;
}
int OTF_CopyHandler_Leave( void* userData, uint64_t time,
uint32_t statetoken, uint32_t cpuid, uint32_t scltoken ) {
return ( 0 == OTF_Writer_writeLeave( (OTF_Writer*)userData, time, statetoken,
cpuid, scltoken ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK;
}
int OTF_CopyHandler_BeginProcess( void* userData, uint64_t time,
uint32_t process ) {
return ( 0 == OTF_Writer_writeBeginProcess( (OTF_Writer*)userData, time,
process ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK;
}
int OTF_CopyHandler_EndProcess( void* userData, uint64_t time,
uint32_t process ) {
return ( 0 == OTF_Writer_writeEndProcess( (OTF_Writer*)userData, time,
process ) ) ? 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 ) {
return ( 0 == OTF_Writer_writeFileOperation( (OTF_Writer*)userData, time, fileid,
process, handleid, operation, bytes, duration, source )
) ? OTF_RETURN_ABORT : OTF_RETURN_OK;
}
/* *** snapshot handlers ********************************************** */
int OTF_CopyHandler_SnapshotComment( void* userData, uint64_t time,
uint32_t process, const char* comment ) {
return ( 0 == OTF_Writer_writeSnapshotComment( (OTF_Writer*)userData,
time, process, comment ) ) ? 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 ) {
return ( 0 == OTF_Writer_writeEnterSnapshot( (OTF_Writer*)userData,
time, originaltime, function, process, source )
) ? 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 source ) {
return ( 0 == OTF_Writer_writeSendSnapshot( (OTF_Writer*)userData,
time, originaltime, sender, receiver, procGroup, tag, source )
) ? 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 ) {
return ( 0 == OTF_Writer_writeOpenFileSnapshot( (OTF_Writer*)userData, time,
originaltime, fileid, process, handleid, source )
) ? OTF_RETURN_ABORT : OTF_RETURN_OK;
}
/* *** summary handlers ********************************************** */
int OTF_CopyHandler_SummaryComment( void * userData, uint64_t time,
uint32_t process, const char* comment ) {
return ( 0 == OTF_Writer_writeSummaryComment( (OTF_Writer*)userData,
time, process, comment ) ) ? 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 ) {
return ( 0 == OTF_Writer_writeFunctionSummary( (OTF_Writer*)userData,
time, function, process, count, excltime, incltime )
) ? 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 ) {
return ( 0 == OTF_Writer_writeFunctionGroupSummary( (OTF_Writer*)userData,
time, functiongroup, process, count, excltime, incltime )
) ? 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 ) {
return ( 0 == OTF_Writer_writeMessageSummary((OTF_Writer*) userData,
time, process, peer, comm, type, sentNumber, receivedNumber, sentBytes,
receivedBytes ) ) ? 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 ) {
return ( 0 == OTF_Writer_writeFileOperationSummary( (OTF_Writer*) userData,
time, fileid, process, nopen, nclose, nread, nwrite, nseek,
bytesread, byteswrite ) ) ? 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 ) {
return ( 0 == OTF_Writer_writeFileOperationSummary( (OTF_Writer*) userData,
time, groupid, process, nopen, nclose, nread, nwrite, nseek,
bytesread, byteswrite ) ) ? OTF_RETURN_ABORT : OTF_RETURN_OK;
}

Просмотреть файл

@ -0,0 +1,148 @@
/*
This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2007.
Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch
*/
/**
* @file OTF_CopyHandler.h
*
* @brief Provides handlers for copying a trace.
*
* \ingroup internal
*/
#ifndef OTF_COPYOTF_CopyHandler_R_H
#define OTF_COPYOTF_CopyHandler_R_H
#include "OTF_inttypes.h"
/* *** Definition OTF_CopyHandler_r *** ************************************* */
int OTF_CopyHandler_DefinitionComment( void* userData, uint32_t stream,
const char* comment );
int OTF_CopyHandler_DefTimerResolution( void* userData, uint32_t stream,
uint64_t ticksPerSecond );
int OTF_CopyHandler_DefProcess( void* userData, uint32_t stream, uint32_t process,
const char* name, uint32_t parent );
int OTF_CopyHandler_DefProcessGroup( void* userData, uint32_t stream,
uint32_t procGroup, const char* name, uint32_t numberOfProcs,
const uint32_t* procs );
int OTF_CopyHandler_DefFunction( void* userData, uint32_t stream, uint32_t func,
const char* name, uint32_t funcGroup, uint32_t source );
int OTF_CopyHandler_DefFunctionGroup( void* userData, uint32_t stream,
uint32_t funcGroup, const char* name );
int OTF_CopyHandler_DefCollectiveOperation( void* userData, uint32_t stream,
uint32_t collOp, const char* name, uint32_t type );
int OTF_CopyHandler_DefCounter( void* userData, uint32_t stream, uint32_t counter,
const char* name, uint32_t properties, uint32_t counterGroup,
const char* unit );
int OTF_CopyHandler_DefCounterGroup( void* userData, uint32_t stream,
uint32_t counterGroup, const char* name );
int OTF_CopyHandler_DefScl( void* userData, uint32_t stream, uint32_t source,
uint32_t sourceFile, uint32_t line );
int OTF_CopyHandler_DefSclFile( void* userData, uint32_t stream,
uint32_t sourceFile, const char* name );
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 );
int OTF_CopyHandler_DefFile( void* userData, uint32_t stream, uint32_t token,
const char* name, uint32_t group );
int OTF_CopyHandler_DefFileGroup( void* userData, uint32_t stream,
uint32_t token, const char* name );
int OTF_CopyHandler_Enter( void* userData, uint64_t time, uint32_t function,
uint32_t process, uint32_t source );
int OTF_CopyHandler_Leave( void* userData, uint64_t time, uint32_t function,
uint32_t process, uint32_t source );
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 );
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 );
int OTF_CopyHandler_Counter( void* userData, uint64_t time, uint32_t process,
uint32_t counter, uint64_t value );
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 );
int OTF_CopyHandler_EventComment( void* userData, uint64_t time, uint32_t process,
const char* comment );
int OTF_CopyHandler_BeginProcess( void* userData, uint64_t time, uint32_t process );
int OTF_CopyHandler_EndProcess( void* userData, uint64_t time, uint32_t process );
int OTF_CopyHandler_SnapshotComment( void* userData, uint64_t time,
uint32_t process, const char* comment );
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 );
int OTF_CopyHandler_EnterSnapshot( void *userData, uint64_t time,
uint64_t originaltime, uint32_t function, uint32_t process,
uint32_t source );
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 source );
int OTF_CopyHandler_OpenFileSnapshot( void* userData, uint64_t time,
uint64_t originaltime, uint32_t fileid, uint32_t process, uint64_t handleid,
uint32_t source );
int OTF_CopyHandler_SummaryComment( void * userData, uint64_t time,
uint32_t process, const char* comment );
int OTF_CopyHandler_FunctionSummary( void* userData, uint64_t time,
uint32_t function, uint32_t process, uint64_t invocations,
uint64_t exclTime, uint64_t inclTime );
int OTF_CopyHandler_FunctionGroupSummary( void* userData, uint64_t time,
uint32_t funcGroup, uint32_t process, uint64_t invocations,
uint64_t exclTime, uint64_t inclTime );
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 );
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 );
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 );
#endif /* OTF_COPYOTF_CopyHandler_R_H */

Просмотреть файл

@ -0,0 +1,173 @@
/*
This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2007.
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
/* version information */
#define OTF_VERSION_MAYOR 1
#define OTF_VERSION_MINOR 3
#define OTF_VERSION_SUB 9
#define OTF_VERSION_STRING "jellyfish"
/* version history:
0.2.1 "octopussy"
0.3.1 "starfish"
0.3.2 "starfish"
0.4.0 "starfish"
0.4.1 "starfish"
0.5.0 "starfish"
1.0.* "starfish"
1.1.* "starfish"
1.2.* "pufferfish"
1.3.* "jellyfish"
*/
/* definitions of record type identifiers */
/* Event records*/
#define OTF_EVENTCOMMENT_RECORD 0
#define OTF_COUNTER_RECORD 1
#define OTF_ENTER_RECORD 2
#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
/* Definition records*/
#define OTF_DEFTIMERRESOLUTION_RECORD 13
#define OTF_DEFPROCESS_RECORD 14
#define OTF_DEFPROCESSGROUP_RECORD 15
#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_FUNCTIONSUMMARY_RECORD 28
#define OTF_FUNCTIONGROUPSUMMARY_RECORD 29
#define OTF_MESSAGESUMMARY_RECORD 30
#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_UNKNOWN_RECORD 41
/* Number of records */
#define OTF_NRECORDS 44
/* Stream format definition */
#define OTF_WSTREAM_FORMAT_SHORT 0
#define OTF_WSTREAM_FORMAT_LONG 1
/* Counter properties */
/* 1st-2nd bit */
#define OTF_COUNTER_TYPE_BITS 3
#define OTF_COUNTER_TYPE_ACC 0
#define OTF_COUNTER_TYPE_ABS 1
/* 3rd-4th bit */
#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
/* 6th-9th bit */
#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 /* 00001 */
#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 */
#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
/* 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
#endif /* OTF_DEFINITIONS_H */

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,88 @@
/*
This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2007.
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"
/** 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_ACTIVE= 1,
OTF_FILESTATUS_SUSPENDED= 2,
OTF_FILESTATUS_CLOSED= 3
};
typedef enum enum_OTF_FileStatus OTF_FileStatus;
/** 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 );
/** 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 );
#endif /* OTF_FILE_H */

Просмотреть файл

@ -0,0 +1,531 @@
/*
This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2007.
Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "OTF_Platform.h"
#include "OTF_FileManager.h"
#include "OTF_File.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;
};
/* *** 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;
}
void OTF_FileManager_finalize( OTF_FileManager* manager ) {
OTF_FileList* pos;
# ifdef OTF_DEBUG
if ( 0 < manager->count ) {
fprintf( stderr, "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 ) {
pos= pos->next;
free( pos );
}
}
manager->list= NULL;
}
OTF_FileManager* OTF_FileManager_open( uint32_t number ) {
OTF_FileManager* ret= (OTF_FileManager*) malloc( sizeof(OTF_FileManager) );
if( NULL == ret ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"no memory left.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
return NULL;
}
OTF_FileManager_init( ret );
OTF_FileManager_setNumber( ret, number );
return ret;
}
void OTF_FileManager_close( OTF_FileManager* fh ) {
OTF_FileManager_finalize( fh );
free( fh );
}
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 ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"illegal value 0 ignored.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
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 ) {
/*
fprintf( stderr, "OTF_FileManager_guaranteeFile()\n" );
*/
if ( m->count < m->number ) {
/* free file handles available */
/*
fprintf( stderr, " OTF_FileManager_guaranteeFile() free handles left\n" );
*/
return 1;
}
/*
fprintf( stderr, " OTF_FileManager_guaranteeFile() need new handles\n" );
*/
/* suspend last entry in list */
if ( 0 == OTF_FileManager_suspendFile( m, m->list->file ) ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"OTF_FileManager_suspendFile() failed.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
return 0;
}
/*
fprintf( stderr, "post suspend %u / %u\n", m->count, m->number );
*/
return 1;
}
/** registers the 'file' as open. return 1 on success, 0 otherwise. */
int OTF_FileManager_registerFile( OTF_FileManager* m, OTF_File* file ) {
/*
fprintf( stderr, "OTF_FileManager_registerFile()\n" );
*/
if ( OTF_FILESTATUS_ACTIVE != OTF_File_status( file ) ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"file not open.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
return 0;
}
if ( m->count >= m->number ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "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 );
# endif /* OTF_VERBOSE */
return 0;
}
OTF_FileManager_listInsertAtHead( &(m->list), file );
/*
fprintf( stderr, " c++ %u -> %u\n", m->count, m->count+1 );
*/
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 ) {
/*
fprintf( stderr, "OTF_FileManager_touchFile()\n" );
*/
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 ) {
/*
fprintf( stderr, "OTF_FileManager_suspendFile()\n" );
*/
if ( OTF_FILESTATUS_ACTIVE != OTF_File_status( file ) ) {
/* file not open, so cannot be suspended */
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"file to be suspended is not open.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
return 0;
}
if ( 0 == OTF_FileManager_listUnlinkAtTail( &(m->list), file ) ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"could not unlink this entry.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
return 0;
};
/*
fprintf( stderr, " c-- %u -> %u\n", m->count, m->count-1 );
*/
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 ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"no memory left.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
return 0;
}
if ( NULL != (*list) ) {
/*
fprintf( stderr, "pre insert : %p --> %p (%p)\n",
*list, (*list)->next, (*list)->file );
*/
newentry->file= entry;
newentry->prev= (*list)->prev;
newentry->next= (*list);
/*
fprintf( stderr, "new entry : %p --> %p (%p)\n",
newentry, newentry->next, newentry->file );
*/
(*list)->prev->next= newentry;
(*list)->prev= newentry;
*list= newentry;
/*
fprintf( stderr, "post insert: %p --> %p (%p)\n",
*list, (*list)->next, (*list)->file );
*/
} else {
/* empty list */
newentry->file= entry;
newentry->prev= newentry;
newentry->next= newentry;
*list= newentry;
}
/*
fprintf( stderr, "after OTF_FileManager_listInsertAtHead():\n" );
*/
/*
OTF_FileManager_listPrint( list );
*/
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 );
/*
fprintf( stderr, "after OTF_FileManager_listUnlinkAtHead() %p found:\n", file );
*/
/*
OTF_FileManager_listPrint( listHead, listTail );
*/
return 1;
}
/* not found */
/*
fprintf( stderr, "after OTF_FileManager_listUnlinkAtHead() %p not found:\n", file );
*/
/*
OTF_FileManager_listPrint( listHead, listTail );
*/
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 );
/*
fprintf( stderr, "after OTF_FileManager_listUnlinkAtHead() %p found:\n", file );
*/
/*
OTF_FileManager_listPrint( listHead, listTail );
*/
return 1;
}
/* not found */
/*
fprintf( stderr, "after OTF_FileManager_listUnlinkAtTail():\n" );
*/
/*
OTF_FileManager_listPrint( listHead, listTail );
*/
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" );
}

Просмотреть файл

@ -0,0 +1,78 @@
/*
This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2007.
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"
struct struct_OTF_File;
typedef struct struct_OTF_File OTF_File;
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 );
#endif /* OTF_FILEMANAGER_H */

Просмотреть файл

@ -0,0 +1,145 @@
/*
This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2007.
Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "OTF_Platform.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#ifdef HAVE_IO_H
#include <io.h>
#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"
char* OTF_getFilename( const char* namestub, uint32_t id, OTF_FileType type,
unsigned int l, char* ret ) {
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) );
}
switch ( type&OTF_FILETYPE_BITS ) {
case OTF_FILETYPE_MASTER:
/* mastercontrol file stays uncompressed even with compression */
OTF_snprintf( ret, l, "%s.%s", namestub, OTF_FILENAMESUFFIX_MAIN );
break;
case OTF_FILETYPE_GLOBAL_DEF:
OTF_snprintf( ret, l, "%s.%s%s", namestub, OTF_FILENAMESUFFIX_DEF,
((type&OTF_FILECOMPRESSION_BITS) > 0 && (type&OTF_FILECOMPRESSION_BITS) <= 9 ) ? ".z" : "" );
break;
case OTF_FILETYPE_DEF:
OTF_snprintf( ret, l, "%s.%x.%s%s", namestub, id, OTF_FILENAMESUFFIX_DEF,
((type&OTF_FILECOMPRESSION_BITS) > 0 && (type&OTF_FILECOMPRESSION_BITS) <= 9 ) ? ".z" : "" );
break;
case OTF_FILETYPE_EVENT:
OTF_snprintf( ret, l, "%s.%x.%s%s", namestub, id, OTF_FILENAMESUFFIX_EVENTS,
((type&OTF_FILECOMPRESSION_BITS) > 0 && (type&OTF_FILECOMPRESSION_BITS) <= 9 ) ? ".z" : "" );
break;
case OTF_FILETYPE_SNAPS:
OTF_snprintf( ret, l, "%s.%x.%s%s", namestub, id, OTF_FILENAMESUFFIX_SNAPS,
((type&OTF_FILECOMPRESSION_BITS) > 0 && (type&OTF_FILECOMPRESSION_BITS) <= 9 ) ? ".z" : "" );
break;
case OTF_FILETYPE_STATS:
OTF_snprintf( ret, l, "%s.%x.%s%s", namestub, id, OTF_FILENAMESUFFIX_STATS,
((type&OTF_FILECOMPRESSION_BITS) > 0 && (type&OTF_FILECOMPRESSION_BITS) <= 9 ) ? ".z" : "" );
break;
default:
return NULL;
}
return ret;
}
/** strip the a filename from the ".otf" suffix if present */
char* OTF_stripFilename( const char* filename ) {
char* ret= OTF_strdup( filename );
char* p= ret;
if( NULL == p ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"no memory left.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
return NULL;
}
while ( '\0' != *p ) {
p++;
}
p -= 4;
if ( 0 == strcmp( p, "."OTF_FILENAMESUFFIX_MAIN ) ) {
*p= '\0';
}
return ret;
}
int OTF_fileExists( const char* filename ) {
if ( 0 == access( filename, F_OK ) ) {
return 1;
} else {
return 0;
}
}

Просмотреть файл

@ -0,0 +1,62 @@
/*
This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2007.
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"
/*#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_BITS (16+32+64+128+256+512)
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 );
#endif /* OTF_FILENAMES */

Просмотреть файл

@ -0,0 +1,395 @@
/*
This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2007.
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"
/** 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 ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"no memory left.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
return NULL;
}
ret->pointer = (OTF_FunctionPointer**) malloc(
OTF_NRECORDS * sizeof( OTF_FunctionPointer* ) );
if( NULL == ret->pointer ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"no memory left.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
free( ret );
ret= NULL;
return NULL;
}
ret->firsthandlerarg = (void**) malloc( OTF_NRECORDS * sizeof( void* ) );
if( NULL == ret->firsthandlerarg ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"no memory left.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
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 ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"handlers have not been specified.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
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 ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"unknown record type %u.\n",
__FUNCTION__, __FILE__, __LINE__, recordtype );
# endif /* OTF_VERBOSE */
return 0;
}
handlers->pointer[recordtype] = pointer;
return 1;
}
int OTF_HandlerArray_setFirstHandlerArg( OTF_HandlerArray* handlers,
void* firsthandlerarg, uint32_t recordtype ) {
if( recordtype >= OTF_NRECORDS ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"unknown record type %u.\n",
__FUNCTION__, __FILE__, __LINE__, recordtype );
# endif /* OTF_VERBOSE */
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_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_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_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_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_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_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_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 );
return 1;
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,332 @@
/*
This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2007.
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
/*
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_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_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'
/* *** event record keywords *** */
#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'
/* *** 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_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'
/* *** 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_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_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_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"
#endif /* OTF_KEYWORDS_H */

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,455 @@
/*
This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2007.
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 <otf.h>
* #include <stdio.h>
* #include <assert.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 <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "OTF_inttypes.h"
#include "OTF_File.h"
#include "OTF_Filenames.h"
#include "OTF_WBuffer.h"
#include "OTF_RBuffer.h"
/** 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 );
/**
* 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 );
#endif /* OTF_MASTERCONTROL_H */

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,53 @@
/*
This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2006.
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"
/** 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 );
/* *** 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 );
#endif /* OTF_PARSE_H */

Просмотреть файл

@ -0,0 +1,20 @@
/*
This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2007.
Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch
*/
#include "OTF_Platform.h"
#include <stdlib.h>
#include <string.h>
char *OTF_strdup(const char *s) {
char *c;
if( s == NULL || ( c = ( char* )malloc( strlen(s)+1 ) ) == NULL )
return NULL;
strcpy( c, s );
return c;
}

Просмотреть файл

@ -0,0 +1,89 @@
/*
This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2007.
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
#ifdef __cplusplus
#define EXTERN extern "C"
#else
#define EXTERN extern
#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__ "<unknown function>"
#endif
#ifndef __FILE__
#define __FILE__ "<unknown file>"
#endif
#ifndef __LINE__
#define __LINE__ 0
#endif
#if defined __linux
#define OTF_fseek fseeko
#define OTF_ftell ftello
#define OTF_snprintf snprintf
#elif defined WIN32 /* windows */
#if defined _MSC_VER /* vs */
#define HAVE_IO_H
#define OTF_ftell (uint64_t) _ftelli64
#define OTF_fseek(f,off,orig) _fseeki64(f,(__int64)off,orig)
#define OTF_snprintf _snprintf
#pragma warning (disable : 4996) /* disable insecurity/deprication warnings */
#else
#error "You are using an unsupported compiler on windows."
#endif
#else /* don't know what to put here */
#define OTF_fseek fseek
#define OTF_ftell ftell
#define OTF_snprintf snprintf
#endif
EXTERN char *OTF_strdup( const char*s );
#endif /* OTF_PLATFORM_H */

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,210 @@
/*
This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2007.
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 <stdlib.h>
#include <stdio.h>
#include "OTF_inttypes.h"
#include "OTF_File.h"
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;
/** 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;
#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 );
/** 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 a array from buffer and return the number of elements.
malloc memory for *array internally, needs to be freed by caller */
uint32_t OTF_RBuffer_readArray( OTF_RBuffer* rbuffer, uint32_t** array );
/** 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 );
#endif /* OTF_RBUFFER_H */

Просмотреть файл

@ -0,0 +1,981 @@
/*
This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2007.
Authors: Andreas Knuepfer, Holger Brunst, Ronny Brendel, Thomas Kriebitzsch
*/
#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"
/** 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->buffersizes= 1024*1024;
#ifdef HAVE_ZLIB
rstream->zbuffersizes= 1024*10;
#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 ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"cannot close defbuffer.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
}
rstream->defBuffer= NULL;
}
if ( NULL != rstream->eventBuffer ) {
tmpret= OTF_RBuffer_close( rstream->eventBuffer );
ret &= tmpret;
if( 0 == tmpret ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"cannot close event buffer.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
}
rstream->eventBuffer= NULL;
}
if ( NULL != rstream->snapsBuffer ) {
tmpret= OTF_RBuffer_close( rstream->snapsBuffer );
ret &= tmpret;
if( 0 == tmpret ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"cannot close snapshots buffer.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
}
rstream->snapsBuffer= NULL;
}
if ( NULL != rstream->statsBuffer ) {
tmpret= OTF_RBuffer_close( rstream->statsBuffer );
ret &= tmpret;
if( 0 == tmpret ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"cannot close statistics buffer.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
}
rstream->statsBuffer= NULL;
}
return ret;
}
OTF_RStream* OTF_RStream_open( const char* namestub, uint32_t id, OTF_FileManager* manager ) {
OTF_RStream* ret= (OTF_RStream*) malloc( sizeof(OTF_RStream) );
if( NULL == ret ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"no memory left.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
return NULL;
}
OTF_RStream_init( ret );
ret->namestub= OTF_strdup( namestub );
ret->id= id;
if( NULL == manager ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"manager has not been specified.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
free( ret );
ret= NULL;
return NULL;
}
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 ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"rstream has not been specified.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
return 0;
}
ret &= OTF_RStream_finish( rstream );
free( rstream );
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 ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"OTF_getFilename() failed.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
return NULL;
}
rstream->defBuffer= OTF_RBuffer_open( filename, rstream->manager );
free( filename );
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;
}
int OTF_RStream_closeDefBuffer( OTF_RStream* rstream ) {
int ret= 1;
if ( NULL != rstream->defBuffer ) {
ret&= OTF_RBuffer_close( rstream->defBuffer );
if( 0 == ret ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"closing defbuffer failed.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
}
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 ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"OTF_getFilename() failed.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
return NULL;
}
rstream->eventBuffer= OTF_RBuffer_open( filename, rstream->manager );
free( filename );
if ( NULL == rstream->eventBuffer ) {
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 ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"closing event buffer failed.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
}
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 ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"OTF_getFilename() failed.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
return NULL;
}
rstream->snapsBuffer= OTF_RBuffer_open( filename, rstream->manager );
free( filename );
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 ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"closing snapshots buffer failed.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
}
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 ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"OTF_getFilename() failed.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
return NULL;
}
rstream->statsBuffer= OTF_RBuffer_open( filename, rstream->manager );
free( filename );
if ( NULL == rstream->statsBuffer ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"OTF_RBuffer_open() failed.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
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 ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"closing statistics buffer failed.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
}
rstream->statsBuffer= NULL;
}
return ret;
}
void OTF_RStream_setBufferSizes( OTF_RStream* rstream, uint32_t size ) {
if ( 50 > size ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"intended buffer size %u is too small, rejected.\n",
__FUNCTION__, __FILE__, __LINE__, size );
# endif /* OTF_VERBOSE */
return;
} else if ( 500 > size ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"buffer size %u is very small, accepted though.\n",
__FUNCTION__, __FILE__, __LINE__, size );
# endif /* OTF_VERBOSE */
} else if ( 10 * 1024 *1024 < size ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"buffer size %u is rather big, accepted though.\n",
__FUNCTION__, __FILE__, __LINE__, size );
# endif /* OTF_VERBOSE */
}
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 ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"intended zbuffer size %u is too small, rejected.\n",
__FUNCTION__, __FILE__, __LINE__, size );
# endif /* OTF_VERBOSE */
return;
} else if ( 512 > size ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"zbuffer size %u is very small, accepted though.\n",
__FUNCTION__, __FILE__, __LINE__, size );
# endif /* OTF_VERBOSE */
} else if ( 10 * 1024 *1024 < size ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"zbuffer size %u is rather big, accepted though.\n",
__FUNCTION__, __FILE__, __LINE__, size );
# endif /* OTF_VERBOSE */
}
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 ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "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 );
# endif /* OTF_VERBOSE */
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;
/* initialized? */
if ( NULL == rstream->defBuffer ) {
/* init */
rstream->defBuffer= OTF_RStream_getDefBuffer( rstream );
if ( NULL == rstream->defBuffer ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"the stream has no def buffer.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
/* 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;
}
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;
}
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
/* initialized? */
if ( NULL == rstream->eventBuffer ) {
/* init */
rstream->eventBuffer= OTF_RStream_getEventBuffer( rstream );
if( NULL == rstream->eventBuffer ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"the stream has no event buffer.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
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 ) {
fprintf( stderr, "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
ret= OTF_Reader_parseEventRecord( rstream->eventBuffer, handlers );
if ( 0 == ret ) {
/* maybe later an errorhandler gives the record to the user */
return OTF_READ_ERROR;
}
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
/* initialized? */
if ( NULL == rstream->snapsBuffer ) {
/* init */
rstream->snapsBuffer= OTF_RStream_getSnapsBuffer( rstream );
if( NULL == rstream->snapsBuffer ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"the stream has no snapshots buffer.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
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 ) {
fprintf( stderr, "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
ret= OTF_Reader_parseSnapshotsRecord( rstream->snapsBuffer, handlers );
if ( 0 == ret ) {
/* maybe later an errorhandler gives the record to the user */
return OTF_READ_ERROR;
}
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
/* initialized? */
if ( NULL == rstream->statsBuffer ) {
/* init */
rstream->statsBuffer= OTF_RStream_getStatsBuffer( rstream );
if( NULL == rstream->statsBuffer ) {
# ifdef OTF_VERBOSE
fprintf( stderr, "ERROR in function %s, file: %s, line: %i:\n "
"the stream has no statistics buffer.\n",
__FUNCTION__, __FILE__, __LINE__ );
# endif /* OTF_VERBOSE */
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 ) {
fprintf( stderr, "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
ret= OTF_Reader_parseStatisticsRecord( rstream->statsBuffer, handlers );
if ( 0 == ret ) {
/* maybe later an errorhandler gives the record to the user */
return OTF_READ_ERROR;
}
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;
}

Просмотреть файл

@ -0,0 +1,617 @@
/*
This is part of the OTF library. Copyright by ZIH, TU Dresden 2005-2007.
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 <otf.h>
* #include <stdio.h>
* #include <assert.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 <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "OTF_inttypes.h"
struct struct_OTF_Reader;
#include "OTF_FileManager.h"
#include "OTF_RBuffer.h"
#include "OTF_Filenames.h"
#include "OTF_HandlerArray.h"
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;
/** 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.
* Cannot be '0'.
* @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 );
/**
* Closes the stream defefinition 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 );
/**
* 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 );
/** 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. Progress 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! This would not
* be possible when referring to bytes read instead of time stamps.
* The progress report is only valid after one or several calls to
* 'readEvents()'.In the latter case 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. Progress 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! this would
* not be possible when refering to bytes read instead of time stamps.
* The progress report is only valid after one or several calls to
* 'readSnapshots()'. In the latter case 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. Progress 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! this would
* not be possible when refering to bytes read instead of time stamps.
* The progress report is only valid after one or several calls to
* 'readStatistics()'. In the latter case 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 time stamps. a percentage can be computed as
* ( current - minimum ) / ( maximum - minimum ).
* This computation takes the read bytes of every stream into account. In the
* latter case 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 time stamps. a percentage can be computed as
* ( current - minimum ) / ( maximum - minimum ).
* This computation takes the read bytes of every stream into account. In the
* latter case 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 time stamps. a percentage can be computed as
* ( current - minimum ) / ( maximum - minimum ).
* This computation takes the read bytes of every stream into account. In the
* latter case 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 );
#endif /* OTF_RSTREAM_H */

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше