Commit 54fa30f2 authored by whitlocb's avatar whitlocb

I merged the RC to the trunk.



git-svn-id: http://visit.ilight.com/svn/visit/trunk/src@7573 18c085ea-50e0-402c-830e-de6fd14e8384
parent 1ebc676e
......@@ -148,6 +148,10 @@
# Mark C. Miller, Tue Jun 16 15:32:47 PDT 2009
# Added logic to check for possible environment variable collision with
# VisIt's Makefile variables.
#
# Brad Whitlock, Thu Jun 18 10:42:16 PDT 2009
# I made the new check be configurable.
#
##############################################################################
@SET_MAKE@
......@@ -201,7 +205,7 @@ DISTCLEAN_FILES= Makefile config.cache config.log config.status \
include/make-depend-gnu include/make-depend-std \
include/make-targets-gnu include/make-targets-std
message: check-make-and-env-vars
message: @CHECK_MAKE_AND_ENV_VARS@
maintainer-clean: distclean
-$(RM) ${DISTCLEAN_FILES}
......
......@@ -1214,6 +1214,48 @@ void BroadcastInt(int &i)
#endif
}
// ****************************************************************************
// Function: BroadcastIntVector
//
// Purpose:
// Broadcast a vector<int> from processor 0 to all other processors
//
// Arguments:
// vi the vector<int>
// myrank the rank of this process
//
// Programmer: Jeremy Meredith
// Creation: July 15, 2003
//
// Modifications:
// Mark C. Miller, Mon Jan 22 22:09:01 PST 2007
// Changed MPI_COMM_WORLD to VISIT_MPI_COMM
//
// Tom Fogal, Mon May 25 16:05:23 MDT 2009
// Added a check for empty vectors.
//
// ****************************************************************************
void BroadcastIntVector(vector<int> &vi, int myrank)
{
#ifdef PARALLEL
int len;
if (myrank==0)
len = vi.size();
MPI_Bcast(&len, 1, MPI_INT, 0, VISIT_MPI_COMM);
if (myrank!=0)
vi.resize(len);
if(len == 0)
{
debug1 << "Don't know how to broadcast empty vector! "
<< "Bailing out early." << std::endl;
return;
}
MPI_Bcast(&vi[0], len, MPI_INT, 0, VISIT_MPI_COMM);
#endif
}
// ****************************************************************************
// Function: BroadcastBool
//
......@@ -1234,36 +1276,30 @@ void BroadcastBool(bool &b)
}
// ****************************************************************************
// Function: BroadcastIntVector
// Function: BroadcastBoolVector
//
// Purpose:
// Broadcast a vector<int> from processor 0 to all other processors
// Broadcast a vector<bool> from processor 0 to all other processors
//
// Arguments:
// vi the vector<int>
// vi the vector<bool>
// myrank the rank of this process
//
// Programmer: Jeremy Meredith
// Creation: July 15, 2003
// Programmer: Brad Whitlock
// Creation: Thu Jun 18 12:02:26 PDT 2009
//
// Modifications:
//
// Mark C. Miller, Mon Jan 22 22:09:01 PST 2007
// Changed MPI_COMM_WORLD to VISIT_MPI_COMM
//
// Tom Fogal, Mon May 25 16:05:23 MDT 2009
// Added a check for empty vectors.
//
// ****************************************************************************
void BroadcastIntVector(vector<int> &vi, int myrank)
void BroadcastBoolVector(vector<bool> &vb, int myrank)
{
#ifdef PARALLEL
int len;
if (myrank==0)
len = vi.size();
len = vb.size();
MPI_Bcast(&len, 1, MPI_INT, 0, VISIT_MPI_COMM);
if (myrank!=0)
vi.resize(len);
vb.resize(len);
if(len == 0)
{
......@@ -1272,7 +1308,19 @@ void BroadcastIntVector(vector<int> &vi, int myrank)
return;
}
MPI_Bcast(&vi[0], len, MPI_INT, 0, VISIT_MPI_COMM);
std::vector<unsigned char> v;
v.resize(len);
if (myrank==0)
{
for (size_t i = 0; i < vb.size(); ++i)
v[i] = vb[i] ? 1 : 0;
}
MPI_Bcast(&v[0], len, MPI_UNSIGNED_CHAR, 0, VISIT_MPI_COMM);
if (myrank!=0)
{
for (size_t i = 0; i < vb.size(); ++i)
vb[i] = v[i]==1;
}
#endif
}
......
......@@ -86,8 +86,9 @@ PIPELINE_API void UnifyMinimumDoubleArrayAcrossAllProcessors(double *, double
PIPELINE_API void UnifyMaximumDoubleArrayAcrossAllProcessors(double *, double *, int);
PIPELINE_API void BroadcastInt(int &i);
PIPELINE_API void BroadcastBool(bool &b);
PIPELINE_API void BroadcastIntVector(std::vector<int>&, int myrank);
PIPELINE_API void BroadcastBool(bool &b);
PIPELINE_API void BroadcastBoolVector(std::vector<bool> &b, int myrank);
PIPELINE_API void BroadcastDouble(double &i);
PIPELINE_API void BroadcastDoubleVector(std::vector<double>&, int myrank);
PIPELINE_API void BroadcastString(std::string &s, int myrank);
......
......@@ -42,6 +42,7 @@
#include <DatabasePluginManager.h>
#include <DatabasePluginInfo.h>
#include <PluginBroadcaster.h>
#include <DebugStream.h>
#include <InvalidPluginException.h>
#include <visitstream.h>
......@@ -101,6 +102,9 @@ DatabasePluginManager::~DatabasePluginManager()
// Arguments:
// pluginCategory: either GUI, Viewer, or Engine
// parallel : true if need parallel libraries
// pluginDir : Allows us to pass in the plugin dir that we want to use.
// readInfo : Whether the plugin info should be read directly.
// broadcaster : An object that can be used to broadcast plugin info.
//
// Programmer: Jeremy Meredith
// Creation: August 22, 2002
......@@ -113,17 +117,45 @@ DatabasePluginManager::~DatabasePluginManager()
// Brad Whitlock, Tue Jun 24 11:13:19 PDT 2008
// Removed plugin characteristics.
//
// Brad Whitlock, Wed Jun 17 13:05:54 PDT 2009
// I added readInfo, broadcaster arguments to allow parallel optimizations.
//
// ****************************************************************************
void
DatabasePluginManager::Initialize(const PluginCategory pluginCategory,
bool par,
const char * pluginDir)
bool par, const char *pluginDir, bool readInfo, PluginBroadcaster *broadcaster)
{
category = pluginCategory;
parallel = par;
SetPluginDir(pluginDir);
ReadPluginInfo();
ObtainPluginInfo(readInfo, broadcaster);
}
// ****************************************************************************
// Method: DatabasePluginManager::BroadcastGeneralInfo
//
// Purpose:
// Broadcasts the general libI plugin information to other processors.
//
// Arguments:
// broadcaster : The broadcaster object to use.
//
// Programmer: Brad Whitlock
// Creation: Thu Jun 18 11:30:15 PDT 2009
//
// Modifications:
//
// ****************************************************************************
void
DatabasePluginManager::BroadcastGeneralInfo(PluginBroadcaster *broadcaster)
{
PluginManager::BroadcastGeneralInfo(broadcaster);
broadcaster->BroadcastBoolVector(haswriter);
broadcaster->BroadcastStringVectorVector(extensions);
broadcaster->BroadcastStringVectorVector(filenames);
}
// ****************************************************************************
......
......@@ -85,6 +85,10 @@ class EngineDatabasePluginInfo;
// Brad Whitlock, Tue Jun 24 11:11:24 PDT 2008
// Removed singleton characteristics.
//
// Brad Whitlock, Wed Jun 17 10:24:46 PDT 2009
// I added arguments to Initialize and I overrode the new BroadcastGeneralInfo
// method.
//
// ****************************************************************************
class PLUGIN_API DatabasePluginManager : public PluginManager
......@@ -93,8 +97,11 @@ class PLUGIN_API DatabasePluginManager : public PluginManager
DatabasePluginManager();
virtual ~DatabasePluginManager();
void Initialize(const PluginCategory, bool parallel=false,
const char *pluginDir=0);
void Initialize(const PluginCategory,
bool parallel=false,
const char *pluginDir=0,
bool readInfo = true,
PluginBroadcaster *broadcaster=0);
virtual void ReloadPlugins();
......@@ -114,6 +121,8 @@ class PLUGIN_API DatabasePluginManager : public PluginManager
virtual void FreeCommonPluginInfo();
virtual void BroadcastGeneralInfo(PluginBroadcaster *);
// arrays containing all plugins (appends the ones in PluginManager.C)
std::vector<bool> haswriter;
std::vector<std::vector<std::string> > extensions;
......
......@@ -73,6 +73,9 @@
# Brad Whitlock, Wed Jul 13 10:42:09 PDT 2005
# Updated LIBS.
#
# Brad Whitlock, Thu Jun 18 11:34:28 PDT 2009
# I added PluginBroadcaster.
#
##############################################################################
##
......@@ -90,7 +93,7 @@ CPPFLAGS=@CPPFLAGS@ -I. -I../../include -I../../include/visit
##
## Files...
##
SRC=PluginManager.C DatabasePluginManager.C \
SRC=PluginManager.C PluginBroadcaster.C DatabasePluginManager.C \
PlotPluginManager.C OperatorPluginManager.C \
InvalidDirectoryException.C InvalidPluginException.C DatabasePluginInfo.C
OBJ=$(SRC:.C=.o)
......
......@@ -42,6 +42,7 @@
#include <OperatorPluginManager.h>
#include <OperatorPluginInfo.h>
#include <PluginBroadcaster.h>
#include <DebugStream.h>
#include <InvalidPluginException.h>
#include <visitstream.h>
......@@ -91,6 +92,9 @@ OperatorPluginManager::~OperatorPluginManager()
// Arguments:
// pluginCategory: either GUI, Viewer, or Engine
// parallel : true if need parallel libraries
// pluginDir : Allows us to pass in the plugin dir that we want to use.
// readInfo : Whether the plugin info should be read directly.
// cb : A callback from which we can obtain plugin info.
//
// Programmer: Jeremy Meredith
// Creation: September 26, 2001
......@@ -106,16 +110,19 @@ OperatorPluginManager::~OperatorPluginManager()
// Brad Whitlock, Tue Jun 24 11:08:52 PDT 2008
// Removed singleton characteristics.
//
// Brad Whitlock, Wed Jun 17 13:05:54 PDT 2009
// I added readInfo, broadcaster arguments to allow parallel optimizations.
//
// ****************************************************************************
void
OperatorPluginManager::Initialize(const PluginCategory pluginCategory,
bool par, const char *pluginDir)
bool par, const char *pluginDir, bool readInfo, PluginBroadcaster *broadcaster)
{
category = pluginCategory;
parallel = par;
SetPluginDir(pluginDir);
ReadPluginInfo();
ObtainPluginInfo(readInfo, broadcaster);
}
// ****************************************************************************
......
......@@ -102,6 +102,9 @@ class ScriptingOperatorPluginInfo;
// Brad Whitlock, Tue Jun 24 10:48:11 PDT 2008
// Removed singleton characteristics.
//
// Brad Whitlock, Wed Jun 17 10:24:46 PDT 2009
// I added arguments to Initialize.
//
// ****************************************************************************
class PLUGIN_API OperatorPluginManager : public PluginManager
......@@ -112,7 +115,9 @@ class PLUGIN_API OperatorPluginManager : public PluginManager
void Initialize(const PluginCategory pluginCategory,
bool parallel=false,
const char *pluginDir = 0);
const char *pluginDir = 0,
bool readInfo = true,
PluginBroadcaster *broadcaster=0);
virtual void ReloadPlugins();
......
......@@ -42,6 +42,7 @@
#include <PlotPluginManager.h>
#include <PlotPluginInfo.h>
#include <PluginBroadcaster.h>
#include <DebugStream.h>
#include <InvalidPluginException.h>
#include <visitstream.h>
......@@ -92,6 +93,8 @@ PlotPluginManager::~PlotPluginManager()
// pluginCategory: either GUI, Viewer, or Engine
// parallel : true if need parallel libraries
// pluginDir : Allows us to pass in the plugin dir that we want to use.
// readInfo : Whether the plugin info should be read directly.
// broadcaster : An object that can be used to broadcast plugin info.
//
// Programmer: Jeremy Meredith
// Creation: September 26, 2001
......@@ -106,16 +109,19 @@ PlotPluginManager::~PlotPluginManager()
// Brad Whitlock, Tue Jun 24 11:10:16 PDT 2008
// Removed singleton characteristics.
//
// Brad Whitlock, Wed Jun 17 10:26:03 PDT 2009
// I added readInfo, broadcaster arguments.
//
// ****************************************************************************
void
PlotPluginManager::Initialize(const PluginCategory pluginCategory,
bool par, const char *pluginDir)
bool par, const char *pluginDir, bool readInfo, PluginBroadcaster *broadcaster)
{
category = pluginCategory;
parallel = par;
SetPluginDir(pluginDir);
ReadPluginInfo();
ObtainPluginInfo(readInfo, broadcaster);
}
// ****************************************************************************
......
......@@ -105,6 +105,9 @@ class ScriptingPlotPluginInfo;
// Brad Whitlock, Tue Jun 24 10:48:11 PDT 2008
// Removed singleton characteristics.
//
// Brad Whitlock, Wed Jun 17 10:24:46 PDT 2009
// I added arguments to Initialize.
//
// ****************************************************************************
class PLUGIN_API PlotPluginManager : public PluginManager
......@@ -114,7 +117,10 @@ class PLUGIN_API PlotPluginManager : public PluginManager
virtual ~PlotPluginManager();
void Initialize(const PluginCategory,
bool=false, const char * = 0);
bool parallel=false,
const char *plugindir = 0,
bool readInfo = true,
PluginBroadcaster *broadcaster=0);
virtual void ReloadPlugins();
......
/*****************************************************************************
*
* Copyright (c) 2000 - 2008, Lawrence Livermore National Security, LLC
* Produced at the Lawrence Livermore National Laboratory
* LLNL-CODE-400142
* All rights reserved.
*
* This file is part of VisIt. For details, see https://visit.llnl.gov/. The
* full copyright notice is contained in the file COPYRIGHT located at the root
* of the VisIt distribution or at http://www.llnl.gov/visit/copyright.html.
*
* 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 disclaimer below.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the disclaimer (as noted below) in the
* documentation and/or other materials provided with the distribution.
* - Neither the name of the LLNS/LLNL 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 LAWRENCE LIVERMORE NATIONAL SECURITY,
* LLC, THE U.S. DEPARTMENT OF ENERGY 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.
*
*****************************************************************************/
#include <PluginBroadcaster.h>
PluginBroadcaster::PluginBroadcaster()
{
}
PluginBroadcaster::~PluginBroadcaster()
{
}
/*****************************************************************************
*
* Copyright (c) 2000 - 2008, Lawrence Livermore National Security, LLC
* Produced at the Lawrence Livermore National Laboratory
* LLNL-CODE-400142
* All rights reserved.
*
* This file is part of VisIt. For details, see https://visit.llnl.gov/. The
* full copyright notice is contained in the file COPYRIGHT located at the root
* of the VisIt distribution or at http://www.llnl.gov/visit/copyright.html.
*
* 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 disclaimer below.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the disclaimer (as noted below) in the
* documentation and/or other materials provided with the distribution.
* - Neither the name of the LLNS/LLNL 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 LAWRENCE LIVERMORE NATIONAL SECURITY,
* LLC, THE U.S. DEPARTMENT OF ENERGY 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.
*
*****************************************************************************/
#ifndef PLUGIN_BROADCASTER_H
#define PLUGIN_BROADCASTER_H
#include <plugin_exports.h>
#include <vectortypes.h>
// ****************************************************************************
// Class: PluginBroadcaster
//
// Purpose:
// This class defines an interface that the plugin manager can use for
// broadcasting plugin data.
//
// Notes:
//
// Programmer: Brad Whitlock
// Creation: Thu Jun 18 11:18:21 PDT 2009
//
// Modifications:
//
// ****************************************************************************
class PLUGIN_API PluginBroadcaster
{
public:
PluginBroadcaster();
virtual ~PluginBroadcaster();
virtual void BroadcastStringVector(stringVector &) = 0;
virtual void BroadcastBoolVector(boolVector &) = 0;
virtual void BroadcastStringVectorVector(std::vector<std::vector<std::string> > &) = 0;
};
#endif
......@@ -53,6 +53,7 @@
#include <InvalidDirectoryException.h>
#include <InvalidPluginException.h>
#include <InstallationFunctions.h>
#include <PluginBroadcaster.h>
#include <visitstream.h>
#if __APPLE__
......@@ -774,6 +775,94 @@ PluginManager::ReadPluginInfo()
}
}
// ****************************************************************************
// Method: PluginManager::BroadcastGeneralInfo
//
// Purpose:
// This method broadcasts the general libI information to other processors
// using a PluginBroadcaster object.
//
// Arguments:
// broadcaster : The broadcaster to use.
//
// Programmer: Brad Whitlock
// Creation: Thu Jun 18 11:22:52 PDT 2009
//
// Modifications:
//
// ****************************************************************************
void
PluginManager::BroadcastGeneralInfo(PluginBroadcaster *broadcaster)
{
broadcaster->BroadcastStringVector(ids);
broadcaster->BroadcastStringVector(names);
broadcaster->BroadcastStringVector(versions);
broadcaster->BroadcastStringVector(libfiles);
broadcaster->BroadcastBoolVector(enabled);
}
// ****************************************************************************
// Method: PluginManager::ObtainPluginInfo
//
// Purpose:
// This method gets the plugin info by calling ReadPluginInfo or from the
// rpiCallback function.
//
// Arguments:
// readInfo : Whether to read the plugin info directly.
// broadcaster : The broadcaster to use for sending plugin info to other procs.
//
// Returns:
//
// Note: In most cases, ReadPluginInfo will be called. However, in parallel
// we can install a callback function lets us share the plugin info
// read by processor 0 with the other processors via broadcasts.
//
// Programmer: Brad Whitlock
// Creation: Wed Jun 17 10:15:11 PDT 2009
//
// Modifications:
//
// ****************************************************************************
void
PluginManager::ObtainPluginInfo(bool readInfo, PluginBroadcaster *broadcaster)
{
if(readInfo || broadcaster == 0)
ReadPluginInfo();
if(broadcaster != 0)
{
BroadcastGeneralInfo(broadcaster);
// If we used the broadcaster to populate ids, names, etc. then that would
// not have set up the appropriate items in allindexmap. Do that now.
if(allindexmap.size() == 0)
{
for(size_t i = 0; i < ids.size(); ++i)
allindexmap[ids[i]] = i;
}
debug5 << "Shared information about " << ids.size() << " " << managerName
<< " plugins." << endl;
}
#if 0
// Keep this for debugging
for(size_t i = 0; i < ids.size(); ++i)
{
debug1 << "plugin " << i << ":\n";
debug1 << "\tid = " << ids[i] << endl;
debug1 << "\tname = " << names[i] << endl;
debug1 << "\tversion = " << versions[i] << endl;
debug1 << "\tlibfile = " << libfiles[i] << endl;
debug1 << "\tenabled = " << (enabled[i] ? "true" : "false") << endl;
debug1 << "\tallindexmap[id] = " << allindexmap[ids[i]] << endl;
}
#endif
}
// ****************************************************************************
// Method: PluginManager::IsGeneralPlugin
//
......@@ -1159,6 +1248,32 @@ PluginManager::GetPluginInitializationErrors()
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
// ****************************************************************************
// Method: AddUniquePluginDir
//
// Purpose:
// Adds a plugin directory to the pluginDirs vector if it has not been added
// yet. This prevents a plugin directory from being added more than once
// as can happen when the user provides a redundant -plugindir command line
// option.
//
// Arguments:
// path : The path to add.
//
// Programmer: Brad Whitlock
// Creation: Wed Jun 17 16:26:31 PDT 2009
//
// Modifications:
//
// ****************************************************************************
void
AddUniquePluginDir(stringVector &pluginDirs, const std::string &path)
{
if(std::find(pluginDirs.begin(), pluginDirs.end(), path) == pluginDirs.end())
pluginDirs.push_back(path);
}
// ****************************************************************************
// Method: PluginManager::SetPluginDir
//
......@@ -1189,6 +1304,9 @@ PluginManager::GetPluginInitializationErrors()
// Modified path-parsing for Windows. ';' is the only valid separator
// between paths since ':' could indicate a drive.
//
// Brad Whitlock, Wed Jun 17 16:28:14 PDT 2009
// I made it use AddUniquePluginDir so we don't add a path multiple times.
//
// ****************************************************************************
void
......@@ -1213,8 +1331,8 @@ PluginManager::SetPluginDir(const char *PluginDir)
{
PathAppend(tmp, "LLNL");
PathAppend(tmp, "VisIt");
pluginDirs.push_back(string(tmp) + VISIT_SLASH_STRING +
managerName + "s");
AddUniquePluginDir(pluginDirs, string(tmp) + VISIT_SLASH_STRING +
managerName + "s");
delete [] tmp;
return;
}
......@@ -1259,7 +1377,7 @@ PluginManager::SetPluginDir(const char *PluginDir)
}
if (!dir.empty())
{
pluginDirs.push_back(string(dir) + VISIT_SLASH_STRING + managerName + "s");
AddUniquePluginDir(pluginDirs, string(dir) + VISIT_SLASH_STRING + managerName + "s");
}
dir = "";
if (*c)
......
......@@ -43,11 +43,12 @@
#ifndef PLUGIN_MANAGER_H
#define PLUGIN_MANAGER_H
#include <plugin_exports.h>
#include <string>
#include <vector>
#include <vectortypes.h>
#include <map>
#include <utility>
class PluginBroadcaster;
// ****************************************************************************
// Class: PluginManager
//
......@@ -99,6 +100,11 @@
// I added Simulation to the plugin categories, which will be a superset
// of Engine.
//
// Brad Whitlock, Wed Jun 17 10:10:20 PDT 2009
// I added a callback for ReadPluginInfo so we can enable an optimization
// that lets non-rank 0 processes not call it in parallel, saving a lot of
// file system accesses.
//
// ****************************************************************************
class PLUGIN_API PluginManager
......@@ -114,6 +120,7 @@ class PLUGIN_API PluginManager
Scripting,
Simulation
};
public:
virtual ~PluginManager();
......@@ -147,7 +154,10 @@ class PLUGIN_API PluginManager
protected:
PluginManager(const std::string&);
void ObtainPluginInfo(bool, PluginBroadcaster *);
void ReadPluginInfo();
virtual void BroadcastGeneralInfo(PluginBroadcaster *);
void ReadPluginDir(std::vector<
std::vector<
std::pair<std::string,
......
This diff is collapsed.
......@@ -1102,6 +1102,13 @@ AC_SUBST(SUBDIRS)
AC_SUBST(ALLSUBDIRS)
AC_SUBST(SRC)
AC_SUBST(BUILD_DBIO_ONLY)
if test "$UNAME" = "Darwin"; then
# Skip the check because it uses an incompatible xargs argument.
CHECK_MAKE_AND_ENV_VARS=""
else
CHECK_MAKE_AND_ENV_VARS="check-make-and-env-vars"
fi
AC_SUBST(CHECK_MAKE_AND_ENV_VARS)
#
# Check for database-only build. Disable a slew of things if so.
......@@ -1457,8 +1464,19 @@ AC_MSG_CHECKING(for convert)
if test -d tools/convert; then
AC_MSG_RESULT(found)
CONVERT_SER="$""(tmpbin)/visitconvert_ser"
if test "$UNAME" = "Darwin"; then
CONVERT_SER_LITE=""
else
CONVERT_SER_LITE="$""(tmpbin)/visitconvert_ser_lite"
fi
if test -n "$PARALLEL"; then
CONVERT_PAR="$""(tmpbin)/visitconvert_par"
if test "$UNAME" = "Darwin"; then
CONVERT_PAR_LITE=""