Commit 600709d1 authored by hrchilds's avatar hrchilds

Update from January 9, 2005

git-svn-id: http://visit.ilight.com/svn/visit/trunk/src@393 18c085ea-50e0-402c-830e-de6fd14e8384
parent c0f4605d
......@@ -35,6 +35,7 @@ shell prompt.
Optional Version Description For More Information
======== ======= =========== ====================
Mili 1.06 I/O library (none)
HDF4 2.0 I/O library http://hdf.ncsa.uiuc.edu/release4/obtain.html
The public version of VisIt has been built with the above listed versions
of the libraries, so it is known to work properly with those versions. For
......@@ -389,6 +390,15 @@ cp MangleMesaInclude/*.h $VISITPATH/vtk/MangleMesaInclude
cp bin/*.dylib $VISITPATH/vtk/lib
cd ..
#
# Install the VTK JPEG library under the visit directory in case the
# computer does not have a JPEG library.
#
mkdir $VISITPATH/jpeg $VISITPATH/jpeg/include $VISITPATH/jpeg/lib
cp Utilities/jpeg/*.h $VISITPATH/jpeg/include
cp bin/libvtkjpeg.dylib $VISITPATH/jpeg/lib/libjpeg.dylib
The next offset after libvtkRendering.dylib, which has an offset of 0x21f6f000 and
a library size of 3,260,676 (0x31c104) bytes is:
......@@ -598,6 +608,51 @@ offset = offset + (0x1000 - offset % 0x1000)
# Next offset
offset = 0x227cd000
==============================================================================
Building HDF4 as a prebound dynamic library
==============================================================================
HDF4 is a data storage library that lets you write large volumes of data to
disk files and it is the predecessor of HDF5. Like most of the other libraries
mentioned so far, HDF4 does not have a make target to produce a prebound, dynamic
library. In fact, its make target for MacOS X produces a static library. Follow
the instructions below for creating prebound dynamic libraries.
# Unpack HDF4
tar zxvf HDF4.2r0.tar.gz
cd HDF4.2r0
vi configure
# Comment out lines 7147-7169 because the script exits with a failure to
# calculate the size of int*. Insert, at line 7178, ac_cv_sizeof_intp=4
# Save the file and exit.
env CFLAGS="-O2 -fno-common" ./configure --with-jpeg=$VISITPATH/jpeg --disable-fortran
make
# Relink libdf and install it.
cd hdf/src
mkdir tmp
cd tmp
ar -x ../libdf.a
gcc -dynamiclib -prebind -twolevel_namespace -o libdf.dylib *.o -L$VISITPATH/jpeg/lib -ljpeg -lz -Wl,-seg1addr,0x227cd000,-install_name,@executable_path/../lib/libdf.dylib,-compatibility_version,2.0,-current_version,2.0
mkdir $VISITPATH/hdf4
mkdir $VISITPATH/hdf4/lib
mkdir $VISITPATH/hdf4/include
mv libdf.dylib $VISITPATH/hdf4/lib
# Relink libmfhdf and install it.
cd ../../../mfhdf/libsrc
mkdir tmp
cd tmp
ar -x ../libmfhdf.a
gcc -dynamiclib -prebind -twolevel_namespace -o libmfhdf.dylib *.o L$VISITPATH/jpeg/lib -L$VISITPATH/hdf4/lib -ljpeg -ldf -Wl,-seg1addr,0x2286000,-install_name,@executable_path/../lib/libmfhdf.dylib,-compatibility_version,2.0,-current_version,2.0
mv libmfhdf.dylib $VISITPATH/hdf4/lib
cd ../../..
# Install the HDF4 header files
cp hdf/src/*.h $VISITPATH/hdf4/include
cp mfhdf/libsrc/*.h $VISITPATH/hdf4/include
cd ..
===============================================================================
Building VisIt with prebinding
......
......@@ -12,18 +12,23 @@
# Brad Whitlock, Thu May 27 12:10:02 PDT 2004
# I rewrote it so it uses code that is more similar to visit-bin-dist.
#
# Brad Whitlock, Thu Jan 6 16:44:08 PST 2005
# I changed the symlinks that we make to account for the executables moving
# to a different directory. I also made the bundles be put in the exe
# directory.
#
###############################################################################
set VISITTOP = `pwd`
set VISITBIN = "$VISITTOP/bin"
set VISITEXE = "$VISITTOP/exe"
set VISITLIB = "$VISITTOP/lib"
set VISITINCLUDE = "$VISITTOP/include"
set VISITICONDIR = "$VISITTOP/common/icons"
if -e $VISITBIN then
# Get the version and cd into the bin directory.
if -e $VISITEXE then
# Get the version and cd into the exe directory.
set VERSION = `cat VERSION`
cd $VISITBIN
cd $VISITEXE
##
## Create the various application bundles.
......@@ -51,8 +56,8 @@ if -e $VISITBIN then
cd $app.app/Contents
ln -s ../../../lib lib
cd MacOS
ln -s ../../../$app $app
ln -s ../../../../../../bin/visit visit
ln -s ../../../../exe/$app $app
ln -s ../../../../bin/visit visit
cd $pwd
cp $VISITICONDIR/$iconFiles[$i].icns $app.app/Contents/Resources
sed "s/PROGRAMNAME/$menuNames[$i]/g" $VISITINCLUDE/$plist[$i] | sed "s/VERSION/$VERSION/g" | sed "s/CREATORCODE/$creatorCodes[$i]/g" | sed "s/ICONFILE/$iconFiles[$i]/g" > $app.app/Contents/Info.plist
......
......@@ -2,7 +2,7 @@
#define EXPRPARSER_H
#include <expr_exports.h>
#include <Parser.h>
#include <VisItParser.h>
#include <ExprScanner.h>
#include <string>
#include <ExprNode.h>
......
......@@ -35,6 +35,9 @@
# Jeremy Meredith, Wed Nov 24 12:31:20 PST 2004
# Created. Took mostly from the old parser library.
#
# Brad Whitlock, Tue Jan 4 17:01:46 PST 2005
# Added additional libraries to the link line so it links on MacOS X.
#
##############################################################################
##
......@@ -74,7 +77,7 @@ CONFIGOBJ=${CONFIGSRC:.C=.o}
TESTOBJ1=$(TESTSRC1:.C=.o)
LIB=libexpr
NOT_DISTRIB=
LIBS=-L../../lib -lmisc -lstate -lcomm -lutility @LIBS@
LIBS=-L../../lib -lmisc -lstate -lcomm -lutility -lparser -lavtexceptions @LIBS@
##
## Standard targets...
......
......@@ -287,7 +287,7 @@ ParsingExprList::GetExpressionTree(Expression *expr)
// ****************************************************************************
// Method: ParsingExprList::GetRealVariable
// Function: ParsingExprList::GetRealVariableHelper
//
// Purpose:
// Determine the first true database variable for any given
......@@ -301,56 +301,95 @@ ParsingExprList::GetExpressionTree(Expression *expr)
// var the original variable name
//
// Programmer: Jeremy Meredith
// Creation: January 6, 2005
// Creation: January 9, 2005
//
// ****************************************************************************
string
ParsingExprList::GetRealVariable(const string &var)
static string
GetRealVariableHelper(const string &var, set<string> expandedVars)
{
// Use a set to check for expression recursion
set<string> expandedVars;
// Check for recursion in expanded vars
if (expandedVars.count(var))
{
EXCEPTION1(RecursiveExpressionException, var);
}
expandedVars.insert(var);
// Use a stack to walk the expression tree
vector<string> varStack;
varStack.push_back(var);
// If this variable is not an expression, then it is real
Expression *expr = ParsingExprList::GetExpression(var);
if (!expr)
{
// Found the real variable
return var;
}
while (!varStack.empty())
// Otherwise, descend into it; get the expression tree
ExprNode *tree = ParsingExprList::GetExpressionTree(expr);
if (!tree)
{
string realvar = varStack.back();
varStack.pop_back();
// We won't normally get here because error
// conditions will usually throw exceptions.
// Otherwise, every expression should have
// a tree.
return "";
}
// Check for recursion
if (expandedVars.count(realvar))
{
EXCEPTION1(RecursiveExpressionException, realvar);
}
expandedVars.insert(realvar);
// Get the leaves for this expression
const set<string> &varLeaves = tree->GetVarLeaves();
if (varLeaves.empty())
return "";
// If this variable is not an expression, then it is real
// Otherwise, descend into it
Expression *expr = GetExpression(realvar);
if (!expr)
{
// Found the real variable
return realvar;
}
// Turn it into a vector for easy walking
const vector<string> leaves(varLeaves.begin(), varLeaves.end());
int nLeaves = leaves.size();
ExprNode *tree = GetExpressionTree(expr);
if (!tree)
{
// We won't normally get here because error
// conditions will usually throw exceptions.
// Otherwise, every expression should have
// a tree.
return "";
}
// For each leaf, look for a real variable
for (int leaf = 0; leaf < nLeaves; leaf++)
{
string realvar = GetRealVariableHelper(leaves[leaf], expandedVars);
const set<string> &varLeaves = tree->GetVarLeaves();
varStack.insert(varStack.end(),
varLeaves.begin(), varLeaves.end());
// If we found a real variable, return it!
if (!realvar.empty())
return realvar;
}
EXCEPTION1(ImproperUseException,
"After parsing, expression has no real variables.");
// Didn't find any real variables
return "";
}
// ****************************************************************************
// Method: ParsingExprList::GetRealVariable
//
// Purpose:
// Determine the first true database variable for any given
// expression. Throw an ImproperUseException if there were
// no real variables in an expression, throw a
// RecursiveExpressionException if the expression is recursive,
// and return the empty string if an unknown error occurred
// during parsing.
//
// Most of the work is done inside the recursion helper function.
// This merely makes sure we actually have a real variable before
// returning to the original caller, as well as setting up an
// empty expanded variables set for the helper function.
//
// Arguments:
// var the original variable name
//
// Programmer: Jeremy Meredith
// Creation: January 9, 2005
//
// ****************************************************************************
string
ParsingExprList::GetRealVariable(const string &var)
{
set<string> emptySet;
string realvar = GetRealVariableHelper(var, emptySet);
if (realvar.empty())
{
EXCEPTION1(ImproperUseException,
"After parsing, expression has no real variables.");
}
return realvar;
}
......@@ -4,7 +4,7 @@
#include <Expression.h>
#include <ExpressionList.h>
#include <SimpleObserver.h>
#include <Parser.h>
#include <VisItParser.h>
#include <string>
#include <avtTypes.h>
......
......@@ -56,6 +56,9 @@
# state table initialization from here. You can go to the expression
# grammar to find that example.
#
# Brad Whitlock, Tue Jan 4 14:23:16 PST 2005
# Added Scanner.C
#
##############################################################################
##
......@@ -79,6 +82,7 @@ COMMONSRC = \
ParseTreeNode.C \
Parser.C \
Rule.C \
Scanner.C \
Sequence.C \
Symbol.C \
Token.C \
......
#include <Parser.h>
#include <VisItParser.h>
#include <Token.h>
#include <SymbolSet.h>
#include <Sequence.h>
......
#include <Scanner.h>
//
// Define the ctor, dtor in the C file so we can link on Windows.
//
Scanner::Scanner()
{
}
Scanner::~Scanner()
{
}
......@@ -27,12 +27,16 @@ using std::deque;
// Refactored to allow other kinds of scanners. This class's old
// functionality moved to ExprScanner.
//
// Brad Whitlock, Tue Jan 4 14:24:35 PST 2005
// Moved ctor, dtor definitions into the C file.
//
// ****************************************************************************
class PARSER_API Scanner
{
public:
Scanner() { }
virtual ~Scanner() { }
Scanner();
virtual ~Scanner();
virtual void SetInput(const std::string &) = 0;
virtual Token *ScanOneToken() = 0;
};
......
......@@ -21,12 +21,15 @@ class Rule;
// Jeremy Meredith, Wed Nov 3 12:16:49 PST 2004
// Added prototypes before the friend declarations.
//
// Brad Whitlock, Tue Jan 4 14:37:51 PST 2005
// Added API macros to the friend function declarations.
//
// ****************************************************************************
// Some compilers (xlC) require prototypes before friend declarations
class Sequence;
Sequence operator+(const Symbol&, const Symbol&);
Sequence operator+(const Sequence&, const Symbol&);
PARSER_API Sequence operator+(const Symbol&, const Symbol&);
PARSER_API Sequence operator+(const Sequence&, const Symbol&);
class PARSER_API Sequence
{
......@@ -49,8 +52,8 @@ class PARSER_API Sequence
Sequence GetSubsequence(int pos) const;
const Symbol *GetLastTerminal() const;
friend Sequence operator+(const Symbol&, const Symbol&);
friend Sequence operator+(const Sequence&, const Symbol&);
friend PARSER_API Sequence operator+(const Symbol&, const Symbol&);
friend PARSER_API Sequence operator+(const Sequence&, const Symbol&);
protected:
int len;
std::vector<const Symbol*> symbols;
......
#ifndef PARSER_H
#define PARSER_H
#ifndef VISIT_PARSER_H
#define VISIT_PARSER_H
#include <parser_exports.h>
#include <vector>
......
#include "Token.h"
#include "Scanner.h"
#include "Grammar.h"
#include "Parser.h"
#include "VisItParser.h"
#include "ParseException.h"
#include "Symbol.h"
......
......@@ -68,6 +68,9 @@
# Jeremy Meredith, Thu Aug 12 11:41:14 PDT 2004
# I added avtSimulationInformation.
#
# Brad Whitlock, Tue Jan 4 17:31:58 PST 2005
# I added -lexpr so it links on MacOS X.
#
##############################################################################
@SET_MAKE@
......@@ -96,7 +99,7 @@ CPPFLAGS=@COMPONENT_CPPFLAGS@ @CPPFLAGS@
OBJ=$(SRC:.C=.o)
LIB=libdbatts
LIBS=-lavtexceptions -lcomm -lparser -lstate -lutility -lmisc
LIBS=-lavtexceptions -lcomm -lparser -lstate -lutility -lmisc -lexpr
##
## Standard targets...
......
# Copyright 2000 - 2004
# Copyright 2000 - 2005
# The Regents of the University of California.
# All rights reserved.
#
......@@ -112,6 +112,9 @@
# Jeremy Meredith, Wed Jul 7 12:12:52 PDT 2004
# I changed _ser.o to simply be .o.
#
# Brad Whitlock, Wed Jan 5 09:25:20 PDT 2005
# Added -lexpr for MacOS X.
#
##############################################################################
@SET_MAKE@
......@@ -155,7 +158,7 @@ CPPFLAGS=-I../../include @COMPONENT_CPPFLAGS@ @CPPFLAGS@
SEROBJ=$(SRC:.C=.o)
PAROBJ=$(SRC:.C=_par.o)
LIB=libdatabase
COMMONLIBS=-ldbatts -lavtexceptions -lstate -lcomm -lmisc -lplugin -lparser -lutility -lmir -lvisit_vtk -llightweight_visit_vtk
COMMONLIBS=-ldbatts -lavtexceptions -lstate -lcomm -lmisc -lplugin -lexpr -lparser -lutility -lmir -lvisit_vtk -llightweight_visit_vtk
SERLIBS=$(COMMONLIBS) -lpipeline_ser -lavtmath_ser $(VTK_LIBS)
PARLIBS=$(COMMONLIBS) -lpipeline_par -lavtmath_par $(VTK_LIBS) @SHLIB_MPI_LIBS@
......
# Copyright 2000 - 2004
# Copyright 2000 - 2005
# The Regents of the University of California.
# All rights reserved.
#
......@@ -89,6 +89,9 @@
# avtCurlFilter, avtRelativeDifferenceFilter, avtMIRvfFilter,
# avtMatErrorFilter, avtDivergenceFilter, and avtLaplacianFilter.
#
# Brad Whitlock, Tue Jan 4 18:14:57 PST 2005
# Added -lexpr so we can link on MacOS X.
#
##############################################################################
@SET_MAKE@
......@@ -217,7 +220,7 @@ CPPFLAGS=@COMPONENT_CPPFLAGS@ @CPPFLAGS@
SEROBJ=$(SRC:.C=.o)
PAROBJ=$(SRC:.C=_par.o)
LIB=libexpressions
COMMONLIBS=-ldbatts -lavtexceptions -lstate -lcomm -lmisc -lparser -lutility -lvisit_vtk -llightweight_visit_vtk
COMMONLIBS=-ldbatts -lavtexceptions -lstate -lcomm -lmisc -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk
SERLIBS=$(COMMONLIBS) -lpipeline_ser -lavtmath_ser $(VTK_LIBS) $(X_LIBS) @LIBS@
PARLIBS=$(COMMONLIBS) -lpipeline_par -lavtmath_par $(VTK_LIBS) $(X_LIBS) @LIBS@ @SHLIB_MPI_LIBS@
......
......@@ -2,6 +2,7 @@
#define AVT_EXPR_NODE_H
#include <ExprNode.h>
#include <expression_exports.h>
class ExprPipelineState;
......@@ -11,14 +12,14 @@ class ExprPipelineState;
//
class avtExprNode : public virtual ExprNode
class EXPRESSION_API avtExprNode : public virtual ExprNode
{
public:
avtExprNode(const Pos &p) : ExprNode(p) {}
virtual void CreateFilters(ExprPipelineState *) = 0;
};
class avtConstExpr
class EXPRESSION_API avtConstExpr
: public avtExprNode, public ConstExpr
{
public:
......@@ -27,7 +28,7 @@ class avtConstExpr
virtual void CreateFilters(ExprPipelineState *);
};
class avtUnaryExpr
class EXPRESSION_API avtUnaryExpr
: public avtExprNode, public UnaryExpr
{
public:
......@@ -36,7 +37,7 @@ class avtUnaryExpr
virtual void CreateFilters(ExprPipelineState *);
};
class avtBinaryExpr : public avtExprNode, public BinaryExpr
class EXPRESSION_API avtBinaryExpr : public avtExprNode, public BinaryExpr
{
public:
avtBinaryExpr(const Pos &p, char o, ExprNode *l, ExprNode *r)
......@@ -44,7 +45,7 @@ class avtBinaryExpr : public avtExprNode, public BinaryExpr
virtual void CreateFilters(ExprPipelineState *);
};
class avtIndexExpr : public avtExprNode, public IndexExpr
class EXPRESSION_API avtIndexExpr : public avtExprNode, public IndexExpr
{
public:
avtIndexExpr(const Pos &p, ExprNode *e, int ind)
......@@ -52,7 +53,7 @@ class avtIndexExpr : public avtExprNode, public IndexExpr
virtual void CreateFilters(ExprPipelineState *);
};
class avtVectorExpr : public avtExprNode, public VectorExpr
class EXPRESSION_API avtVectorExpr : public avtExprNode, public VectorExpr
{
public:
avtVectorExpr(const Pos &p, ExprNode *x, ExprNode *y, ExprNode *z=NULL)
......@@ -60,7 +61,7 @@ class avtVectorExpr : public avtExprNode, public VectorExpr
virtual void CreateFilters(ExprPipelineState *);
};
class avtFunctionExpr : public avtExprNode, public FunctionExpr
class EXPRESSION_API avtFunctionExpr : public avtExprNode, public FunctionExpr
{
public:
avtFunctionExpr(const Pos &p, Identifier *i, ArgsExpr *e=NULL)
......@@ -68,7 +69,7 @@ class avtFunctionExpr : public avtExprNode, public FunctionExpr
virtual void CreateFilters(ExprPipelineState *);
};
class avtVarExpr : public avtExprNode, public VarExpr
class EXPRESSION_API avtVarExpr : public avtExprNode, public VarExpr
{
public:
avtVarExpr(const Pos &p, DBExpr *d, PathExpr *v, bool exp)
......
......@@ -4,13 +4,14 @@
#include <ExprNodeFactory.h>
#include <ExprToken.h>
#include <avtExprNode.h>
#include <expression_exports.h>
// Modifications:
// Jeremy Meredith, Wed Nov 24 12:24:12 PST 2004
// Renamed Engine to avt.
//
class avtExprNodeFactory: public ExprNodeFactory
class EXPRESSION_API avtExprNodeFactory: public ExprNodeFactory
{
public:
virtual ~avtExprNodeFactory() {}
......
# Copyright 1991 - 2004
# Copyright 1991 - 2005
# The Regents of the University of California.
# All rights reserved.
#
......@@ -37,6 +37,9 @@
# Brad Whitlock, Thu Apr 22 16:58:36 PST 2004
# Added more files to LIBS so we can prebind on MacOS X.
#
# Brad Whitlock, Wed Jan 5 09:25:20 PDT 2005
# Added -lexpr for MacOS X.
#
##############################################################################
##
......@@ -55,7 +58,7 @@ CPPFLAGS=-I../../include/visit @COMPONENT_CPPFLAGS@ @CPPFLAGS@
OBJ=$(SRC:.C=.o)
LIB=libavtwriter
LIBS=-ldbatts -lpipeline_ser -lavtmath_ser -lavtexceptions -lvisit_vtk -llightweight_visit_vtk -lmisc -lstate -lcomm -lparser -lutility $(VTK_LIBS) $(X_LIBS)
LIBS=-ldbatts -lpipeline_ser -lavtmath_ser -lavtexceptions -lvisit_vtk -llightweight_visit_vtk -lmisc -lstate -lcomm -lexpr -lparser -lutility $(VTK_LIBS) $(X_LIBS)
##
## Standard targets...
......
# Copyright 2001-2004
# Copyright 2001-2005
# The Regents of the University of California.
# All rights reserved.
#
......@@ -47,6 +47,9 @@
# Hank Childs, Mon Nov 22 08:38:45 PST 2004
# Added avtMassVoxelExtractor.
#
# Brad Whitlock, Tue Jan 4 18:14:57 PST 2005
# Added -lexpr so we can link on MacOS X.
#
##############################################################################
##
......@@ -96,7 +99,7 @@ CPPFLAGS=-I../../include @COMPONENT_CPPFLAGS@ @CPPFLAGS@
SEROBJ=$(SRC:.C=.o)
PAROBJ=$(SRC:.C=_par.o)
LIB=libavtfilters
COMMONLIBS=-ldbatts -lstate -lcomm -lmisc -lavtexceptions -lparser -lutility -lavtview -lvisit_vtk -llightweight_visit_vtk
COMMONLIBS=-ldbatts -lstate -lcomm -lmisc -lavtexceptions -lexpr -lparser -lutility -lavtview -lvisit_vtk -llightweight_visit_vtk
SERLIBS=$(COMMONLIBS) -lpipeline_ser -lavtmath_ser $(VTK_LIBS)
PARLIBS=$(COMMONLIBS) -lpipeline_par -lavtmath_par $(VTK_LIBS)
......
......@@ -40,6 +40,9 @@
# Brad Whitlock, Thu Apr 22 15:47:15 PST 2004
# I added more libraries so it links completely for prebinding on MacOS X.
#
# Brad Whitlock, Tue Jan 4 17:43:58 PST 2005
# I added -lexpr for MacOS X.
#
##############################################################################
@SET_MAKE@
......@@ -72,7 +75,7 @@ CPPFLAGS=-I../../include @COMPONENT_CPPFLAGS@ @CPPFLAGS@
OBJ=$(SRC:.C=.o)
LIB=libmir
LIBS=-ldbatts -lpipeline_ser -lavtmath_ser -lavtexceptions -lstate -lutility -lmisc -lcomm -lparser -llightweight_visit_vtk $(VTK_LIBS)
LIBS=-ldbatts -lpipeline_ser -lavtmath_ser -lavtexceptions -lstate -lutility -lmisc -lcomm -lexpr -lparser -llightweight_visit_vtk $(VTK_LIBS)
##
## Standard targets...
......
......@@ -191,6 +191,9 @@
# Kathleen Bonnell, Mon Jan 3 13:33:20 PST 2005
# Add avtTimeLoopFilter.
#
# Brad Whitlock, Tue Jan 4 17:42:23 PST 2005
# Added -lexpr so it links on MacOS X.
#
##############################################################################
@SET_MAKE@
......@@ -329,8 +332,8 @@ CPPFLAGS=@COMPONENT_CPPFLAGS@ @CPPFLAGS@
SEROBJ=$(SRC:.C=.o)
PAROBJ=$(SRC:.C=_par.o)
LIB=libpipeline
SERLIBS=-ldbatts -lavtexceptions -lstate -lcomm -lmisc -lutility -lparser -lavtmath_ser -llightweight_visit_vtk @VTK_LIBS@ $(X_LIBS) @LIBS@
PARLIBS=-ldbatts -lavtexceptions -lstate -lcomm -lmisc -lutility -lparser -lavtmath_par -llightweight_visit_vtk @VTK_LIBS@ $(X_LIBS) @LIBS@ @SHLIB_MPI_LIBS@
SERLIBS=-ldbatts -lavtexceptions -lstate -lcomm -lmisc -lutility -lexpr -lparser -lavtmath_ser -llightweight_visit_vtk @VTK_LIBS@ $(X_LIBS) @LIBS@
PARLIBS=-ldbatts -lavtexceptions -lstate -lcomm -lmisc -lutility -lexpr -lparser -lavtmath_par -llightweight_visit_vtk @VTK_LIBS@ $(X_LIBS) @LIBS@ @SHLIB_MPI_LIBS@
##