Commit 802aa25b authored by bonnell's avatar bonnell

update glew to version 1.10.0

git-svn-id: http://visit.ilight.com/svn/visit/trunk/src@21744 18c085ea-50e0-402c-830e-de6fd14e8384
parent b8e12644
...@@ -353,6 +353,9 @@ ...@@ -353,6 +353,9 @@
# Eric Brugger, Thu May 9 17:09:27 PDT 2013 # Eric Brugger, Thu May 9 17:09:27 PDT 2013
# Removed support for mangled mesa. # Removed support for mangled mesa.
# #
# Kathleen Biagas, Tue Sep 3 11:06:51 PDT 2013
# Turn off SLIVR if we aren't using GLEW.
#
#****************************************************************************/ #****************************************************************************/
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.8 FATAL_ERROR) CMAKE_MINIMUM_REQUIRED(VERSION 2.8.8 FATAL_ERROR)
...@@ -1132,6 +1135,7 @@ IF(VISIT_USE_GLEW) ...@@ -1132,6 +1135,7 @@ IF(VISIT_USE_GLEW)
ELSE(VISIT_USE_GLEW) ELSE(VISIT_USE_GLEW)
# We're not using GLEW but we need to substitute GL # We're not using GLEW but we need to substitute GL
SET(GLEW_INCLUDE_DIR ${OPENGL_INCLUDE_DIR}) SET(GLEW_INCLUDE_DIR ${OPENGL_INCLUDE_DIR})
VISIT_OPTION_DEFAULT(VISIT_SLIVR false TYPE BOOL)
ENDIF(VISIT_USE_GLEW) ENDIF(VISIT_USE_GLEW)
# Set up the tuvok library if it was enabled. # Set up the tuvok library if it was enabled.
......
...@@ -48,6 +48,10 @@ ...@@ -48,6 +48,10 @@
# Kathleen Biagas, Tue Jul 31 12:08:32 MST 2012 # Kathleen Biagas, Tue Jul 31 12:08:32 MST 2012
# Change CONFIGURE_FILE settings so things work correctly with # Change CONFIGURE_FILE settings so things work correctly with
# out-of-source builds. # out-of-source builds.
#
# Kathleen Biagas, Tue Sep 3 11:08:03 PDT 2013
# Swap avtGLEWInitializer for avtOpenGLExtensionManager.
#
#****************************************************************************/ #****************************************************************************/
SET(VISIT_VTK_MANTA_SOURCES SET(VISIT_VTK_MANTA_SOURCES
...@@ -71,7 +75,7 @@ CONFIGURE_FILE( ...@@ -71,7 +75,7 @@ CONFIGURE_FILE(
) )
SET(AVTPLOTTER_OPENGL_SOURCES SET(AVTPLOTTER_OPENGL_SOURCES
avtGLEWInitializer.C avtOpenGLExtensionManager.C
avtOpenGLSurfaceAndWireframeRenderer.C avtOpenGLSurfaceAndWireframeRenderer.C
vtk/vtkOpenGLRectilinearGridMapper.C vtk/vtkOpenGLRectilinearGridMapper.C
vtk/vtkOpenGLStructuredGridMapper.C vtk/vtkOpenGLStructuredGridMapper.C
......
...@@ -37,19 +37,13 @@ ...@@ -37,19 +37,13 @@
*****************************************************************************/ *****************************************************************************/
// ************************************************************************* // // ************************************************************************* //
// GLEWInitializer.C // // avtOpenGLExtensionManager.C //
// ************************************************************************* // // ************************************************************************* //
#include <algorithm>
#include <iterator>
#include "avtGLEWInitializer.h" #include "avtOpenGLExtensionManager.h"
#include <avtCallback.h>
#include <DebugStream.h> #include <iostream>
#include <LibraryNotFoundException.h> using namespace std;
#include "VisItInit.h"
#include <visit-config.h>
#include <RuntimeSetting.h>
#include <StringHelpers.h>
namespace avt { namespace glew { namespace avt { namespace glew {
...@@ -98,105 +92,12 @@ bool initialize(bool force) ...@@ -98,105 +92,12 @@ bool initialize(bool force)
{ {
return true; return true;
} }
GLenum err = glewInit();
typedef std::vector<std::string> stringvec; if (GLEW_OK == err)
stringvec gl_errors;
enum GL_Name_Convention convention;
enum GL_Library_Type libtype;
bool use_mesa = false;
#ifdef HAVE_OSMESA
std::string comp_name(VisItInit::GetComponentName());
//if(comp_name == "engine_ser" || comp_name == "engine_par")
//{
use_mesa = avtCallback::GetSoftwareRendering();
//}
debug1 << comp_name << " avtGLEWInitializer::initialize use_mesa = " << use_mesa <<endl;
// FIXME_VTK6 remove this cout statment after the dust settles:
cout << comp_name << " avtGLEWInitializer::initialize use_mesa = " << use_mesa <<endl;
#endif
#ifdef VISIT_STATIC
// VisIt is being built statically so we pass a NULL gl_lib to GLEW so
// it will cause dlopen to open the program instead of an external library.
// This lets it pick up the GL and MGL functions we've linked.
const char *gl_lib = NULL;
if(use_mesa)
{
convention = GLEW_NAME_STANDARD;
libtype = GLEW_LIB_TYPE_OSMESA;
}
else
{
convention = GLEW_NAME_STANDARD;
libtype = GLEW_LIB_TYPE_NATIVE;
}
GLenum err = glewInitLibrary(gl_lib, libtype, convention);
if(GLEW_OK == err)
{
initialized = true; initialized = true;
}
else
{
std::ostringstream errmsg;
errmsg << "GLEW init with library 'NULL' "
<< "failed: " << glewGetErrorString(err);
debug4 << errmsg.str() << std::endl;
gl_errors.push_back(errmsg.str());
}
#else
std::string gl_lib;
if(use_mesa)
{
gl_lib = RuntimeSetting::lookups("mesa-lib");
convention = GLEW_NAME_STANDARD;
libtype = GLEW_LIB_TYPE_OSMESA;
}
else else
{ cerr << "GLEW initialization failed: " << glewGetErrorString(err) << endl;
gl_lib = RuntimeSetting::lookups("system-gl");
convention = GLEW_NAME_STANDARD;
libtype = GLEW_LIB_TYPE_NATIVE;
}
stringvec gl_libs = StringHelpers::split(gl_lib, ';');
for(stringvec::const_iterator lib = gl_libs.begin(); lib != gl_libs.end();
++lib)
{
debug4 << "Initializing GLEW using library: " << *lib << std::endl;
GLenum err = glewInitLibrary(lib->c_str(), libtype, convention);
if(GLEW_OK == err)
{
initialized = true;
break;
}
else
{
std::ostringstream errmsg;
errmsg << "GLEW init with library '" << *lib << "' "
<< "failed: " << glewGetErrorString(err);
debug4 << errmsg.str() << std::endl;
gl_errors.push_back(errmsg.str());
}
}
#endif
if(!initialized)
{
std::ostringstream noGL;
noGL << "GLEW initialization FAILED.\n";
std::copy(gl_errors.begin(), gl_errors.end(),
std::ostream_iterator<std::string>(noGL, "\n"));
std::string env_var = use_mesa ? "VISIT_MESA_LIB" : "VISIT_GL_LIB";
std::string cmd_line = use_mesa ? "--mesa-lib" : "--system-gl-lib";
noGL << "\nTry setting the " << env_var << " environment variable, "
<< "or using the " << cmd_line << " command line option.";
EXCEPTION1(LibraryNotFoundException, noGL.str());
}
#endif #endif
return initialized; return initialized;
} }
......
...@@ -37,10 +37,10 @@ ...@@ -37,10 +37,10 @@
*****************************************************************************/ *****************************************************************************/
// ************************************************************************* // // ************************************************************************* //
// GLEWInitializer.h // // avtOpenGLExtensionManager.h //
// ************************************************************************* // // ************************************************************************* //
#ifndef VISIT_GLEW_INITIALIZER_H #ifndef AVT_OPENGL_EXTENSION_MANAGER_H
#define VISIT_GLEW_INITIALIZER_H #define AVT_OPENGL_EXTENSION_MANAGER_H
#include <plotter_exports.h> #include <plotter_exports.h>
#ifdef HAVE_LIBGLEW #ifdef HAVE_LIBGLEW
......
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
#include "avtOpenGLSurfaceAndWireframeRenderer.h" #include "avtOpenGLSurfaceAndWireframeRenderer.h"
#include <avtGLEWInitializer.h> #include <avtOpenGLExtensionManager.h>
#include <vtkCellArray.h> #include <vtkCellArray.h>
#include <vtkCellData.h> #include <vtkCellData.h>
......
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
#include <plotter_exports.h> #include <plotter_exports.h>
#include <avtSurfaceAndWireframeRenderer.h> #include <avtSurfaceAndWireframeRenderer.h>
#include <avtGLEWInitializer.h> // needed for GLenum #include <avtOpenGLExtensionManager.h> // needed for GLenum
#include <vtkType.h> // for vtkIdType #include <vtkType.h> // for vtkIdType
class vtkCellArray; class vtkCellArray;
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
// The gcc-4.x compiler no longer just warns about automatic type conversion. // The gcc-4.x compiler no longer just warns about automatic type conversion.
// //
=========================================================================*/ =========================================================================*/
#include <avtGLEWInitializer.h> #include <avtOpenGLExtensionManager.h>
#include "vtkOpenGLRectilinearGridMapper.h" #include "vtkOpenGLRectilinearGridMapper.h"
#include <vtkPoints.h> #include <vtkPoints.h>
...@@ -1002,11 +1002,11 @@ vtkOpenGLRectilinearGridMapper::BeginColorTexturing() ...@@ -1002,11 +1002,11 @@ vtkOpenGLRectilinearGridMapper::BeginColorTexturing()
// //
#ifdef HAVE_LIBGLEW #ifdef HAVE_LIBGLEW
if(GLEW_EXT_secondary_color) if(GLEW_EXT_secondary_color)
#endif
{ {
glEnable(GL_COLOR_SUM_EXT); glEnable(GL_COLOR_SUM_EXT);
glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR); glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR);
} }
#endif
} }
...@@ -1042,10 +1042,10 @@ vtkOpenGLRectilinearGridMapper::EndColorTexturing() ...@@ -1042,10 +1042,10 @@ vtkOpenGLRectilinearGridMapper::EndColorTexturing()
} }
#ifdef HAVE_LIBGLEW #ifdef HAVE_LIBGLEW
if(GLEW_EXT_secondary_color) if(GLEW_EXT_secondary_color)
#endif
{ {
glDisable(GL_COLOR_SUM_EXT); glDisable(GL_COLOR_SUM_EXT);
} }
#endif
} }
......
...@@ -21,31 +21,30 @@ ...@@ -21,31 +21,30 @@
// //
=========================================================================*/ =========================================================================*/
#include "vtkOpenGLStructuredGridMapper.h" #include "vtkOpenGLStructuredGridMapper.h"
#include <avtOpenGLExtensionManager.h>
#include <avtGLEWInitializer.h>
#include <vtkCellArray.h>
#include <vtkCellData.h>
#include <vtkCommand.h>
#include <vtkDataArray.h>
#include <vtkFloatArray.h>
#include <vtkImageData.h>
#include <vtkLookupTable.h>
#include <vtkMatrix4x4.h>
#include <vtkObjectFactory.h>
#include <vtkOpenGLRenderer.h>
#include <vtkPlane.h>
#include <vtkPlaneCollection.h>
#include <vtkPointData.h>
#include <vtkPoints.h> #include <vtkPoints.h>
#include "vtkCellArray.h" #include <vtkPolygon.h>
#include "vtkCellData.h" #include <vtkProperty.h>
#include "vtkCommand.h" #include <vtkRenderWindow.h>
#include "vtkDataArray.h" #include <vtkSkewLookupTable.h>
#include "vtkFloatArray.h" #include <vtkStructuredGrid.h>
#include "vtkImageData.h" #include <vtkTimerLog.h>
#include "vtkMatrix4x4.h" #include <vtkTriangle.h>
#include "vtkObjectFactory.h"
#include "vtkOpenGLRenderer.h"
#include "vtkPlane.h"
#include "vtkPlaneCollection.h"
#include "vtkPointData.h"
#include "vtkStructuredGrid.h"
#include "vtkPolygon.h"
#include "vtkProperty.h"
#include "vtkTimerLog.h"
#include "vtkTriangle.h"
#include "vtkRenderWindow.h"
#include "vtkLookupTable.h"
#include "vtkSkewLookupTable.h"
static const int dlSize = 8192; static const int dlSize = 8192;
...@@ -862,11 +861,11 @@ vtkOpenGLStructuredGridMapper::BeginColorTexturing() ...@@ -862,11 +861,11 @@ vtkOpenGLStructuredGridMapper::BeginColorTexturing()
// //
#ifdef HAVE_LIBGLEW #ifdef HAVE_LIBGLEW
if(GLEW_EXT_secondary_color) if(GLEW_EXT_secondary_color)
#endif
{ {
glEnable(GL_COLOR_SUM_EXT); glEnable(GL_COLOR_SUM_EXT);
glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR); glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR);
} }
#endif
} }
...@@ -904,8 +903,6 @@ vtkOpenGLStructuredGridMapper::EndColorTexturing() ...@@ -904,8 +903,6 @@ vtkOpenGLStructuredGridMapper::EndColorTexturing()
#ifdef HAVE_LIBGLEW #ifdef HAVE_LIBGLEW
if(GLEW_EXT_secondary_color) if(GLEW_EXT_secondary_color)
glDisable(GL_COLOR_SUM_EXT); glDisable(GL_COLOR_SUM_EXT);
#else
glDisable(GL_COLOR_SUM_EXT);
#endif #endif
} }
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
* *
*****************************************************************************/ *****************************************************************************/
#include "vtkOpenGLTexturedBackgroundMapper.h" #include "vtkOpenGLTexturedBackgroundMapper.h"
#include <avtGLEWInitializer.h> #include <avtOpenGLExtensionManager.h>
#include <vtkCamera.h> #include <vtkCamera.h>
#include <vtkTexture.h> #include <vtkTexture.h>
#include <vtkViewport.h> #include <vtkViewport.h>
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
* *
*****************************************************************************/ *****************************************************************************/
#include <avtGLEWInitializer.h> // Make sure GLEW gets included first. #include <avtOpenGLExtensionManager.h> // Make sure GLEW gets included first.
#include "vtkTexturedPointsPainter.h" #include "vtkTexturedPointsPainter.h"
#include <vtkObjectFactory.h> #include <vtkObjectFactory.h>
......
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
#include <VisWindowColleagueProxy.h> #include <VisWindowColleagueProxy.h>
#include <avtCallback.h> #include <avtCallback.h>
#include <avtGLEWInitializer.h> #include <avtOpenGLExtensionManager.h>
#include <avtSourceFromImage.h> #include <avtSourceFromImage.h>
#include <ImproperUseException.h> #include <ImproperUseException.h>
......
...@@ -42,7 +42,6 @@ ...@@ -42,7 +42,6 @@
#include <vtkToolkits.h> #include <vtkToolkits.h>
#include <avtGLEWInitializer.h>
#include <avtCurvePlot.h> #include <avtCurvePlot.h>
#include <avtOpenGLCurveRenderer.h> #include <avtOpenGLCurveRenderer.h>
......
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
#include <DebugStream.h> #include <DebugStream.h>
#include <TimingsManager.h> #include <TimingsManager.h>
#include <avtGLEWInitializer.h> #include <avtOpenGLExtensionManager.h>
// **************************************************************************** // ****************************************************************************
// Method: avtOpenGLCurveRenderer::avtOpenGLCurveRenderer // Method: avtOpenGLCurveRenderer::avtOpenGLCurveRenderer
......
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
#include <avtOpenGLLabelRenderer.h> #include <avtOpenGLLabelRenderer.h>
#include <arial.h> #include <arial.h>
#include <avtGLEWInitializer.h> #include <avtOpenGLExtensionManager.h>
#include <vtkCamera.h> #include <vtkCamera.h>
#include <vtkCellData.h> #include <vtkCellData.h>
......
...@@ -59,7 +59,7 @@ ...@@ -59,7 +59,7 @@
#include <vtkMantaPolyDataMapper.h> #include <vtkMantaPolyDataMapper.h>
#include <vtkObjectFactory.h> #include <vtkObjectFactory.h>
#include <avtGLEWInitializer.h> #include <avtOpenGLExtensionManager.h>
#include <avtCallback.h> #include <avtCallback.h>
#include <avtColorTables.h> #include <avtColorTables.h>
#include <avtViewInfo.h> #include <avtViewInfo.h>
...@@ -68,8 +68,6 @@ ...@@ -68,8 +68,6 @@
#include <LightList.h> #include <LightList.h>
#include <MoleculeAttributes.h> #include <MoleculeAttributes.h>
#include <avtGLEWInitializer.h>
#include "AtomicProperties.h" #include "AtomicProperties.h"
#include <LineAttributes.h> #include <LineAttributes.h>
......
...@@ -52,7 +52,6 @@ ...@@ -52,7 +52,6 @@
#include <vtkRenderWindow.h> #include <vtkRenderWindow.h>
#include <vtkToolkits.h> #include <vtkToolkits.h>
#include <avtGLEWInitializer.h>
#include "avtMoleculeRenderer.h" #include "avtMoleculeRenderer.h"
#include <avtCallback.h> #include <avtCallback.h>
......
...@@ -49,15 +49,7 @@ ...@@ -49,15 +49,7 @@
// //
#include <visit-config.h> #include <visit-config.h>
#include <avtGLEWInitializer.h> #include <avtOpenGLExtensionManager.h>
#if defined(__APPLE__)
#include <OpenGL/gl.h>
#else
#if defined(_WIN32)
#include <windows.h>
#endif
#include <GL/gl.h>
#endif
#define SPHERE_TEX_W 256 #define SPHERE_TEX_W 256
#define SPHERE_TEX_H 256 #define SPHERE_TEX_H 256
......
...@@ -37,13 +37,12 @@ ...@@ -37,13 +37,12 @@
*****************************************************************************/ *****************************************************************************/
#include "avtOpenGLAtomTexturer3D.h" #include "avtOpenGLAtomTexturer3D.h"
#include <avtOpenGLExtensionManager.h>
#include <vtkConfigure.h> #include <vtkConfigure.h>
#include <cstring> #include <cstring>
#include <math.h> #include <math.h>
#include <vtkConfigure.h>
#include <avtGLEWInitializer.h>
#include <DebugStream.h> #include <DebugStream.h>
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
......
...@@ -57,7 +57,7 @@ ...@@ -57,7 +57,7 @@
#include "avtOpenGLMoleculeRenderer.h" #include "avtOpenGLMoleculeRenderer.h"
#include <avtGLEWInitializer.h> #include <avtOpenGLExtensionManager.h>
#include <avtCallback.h> #include <avtCallback.h>
#include <avtColorTables.h> #include <avtColorTables.h>
#include <avtViewInfo.h> #include <avtViewInfo.h>
...@@ -66,8 +66,6 @@ ...@@ -66,8 +66,6 @@
#include <LightList.h> #include <LightList.h>
#include <MoleculeAttributes.h> #include <MoleculeAttributes.h>
#include <avtGLEWInitializer.h>
#include "AtomicProperties.h" #include "AtomicProperties.h"
#include <LineAttributes.h> #include <LineAttributes.h>
......
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
#include <float.h> #include <float.h>
#include <avtGLEWInitializer.h> #include <avtOpenGLExtensionManager.h>
#include <vtkDataArray.h> #include <vtkDataArray.h>
#include <vtkPointData.h> #include <vtkPointData.h>
#include <vtkRectilinearGrid.h> #include <vtkRectilinearGrid.h>
......
...@@ -41,6 +41,7 @@ ...@@ -41,6 +41,7 @@
// ************************************************************************* // // ************************************************************************* //
#include <avtGLSLProgram.h> #include <avtGLSLProgram.h>
#include <avtOpenGLExtensionManager.h>
#include <DebugStream.h> #include <DebugStream.h>
#include <cstring> #include <cstring>
......
...@@ -63,7 +63,7 @@ class avtGLSLProgramImplementation; ...@@ -63,7 +63,7 @@ class avtGLSLProgramImplementation;
// //
// **************************************************************************** // ****************************************************************************
#include <avtGLEWInitializer.h> #include <avtOpenGLExtensionManager.h>
#include <vector> #include <vector>
#include <string> #include <string>
......
...@@ -64,7 +64,7 @@ ...@@ -64,7 +64,7 @@
#include <ImproperUseException.h> #include <ImproperUseException.h>
#include <LineAttributes.h> #include <LineAttributes.h>
#include <avtLookupTable.h> #include <avtLookupTable.h>
#include <avtGLEWInitializer.h> #include <avtOpenGLExtensionManager.h>
#include <avtGLSLProgram.h> #include <avtGLSLProgram.h>
#include <vtkCamera.h> #include <vtkCamera.h>
#include <vtkStripper.h> #include <vtkStripper.h>
......
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
#include <float.h> #include <float.h>
#include "avtOpenGL3DTextureVolumeRenderer.h" #include "avtOpenGL3DTextureVolumeRenderer.h"
#include <avtGLEWInitializer.h> #include <avtOpenGLExtensionManager.h>
#include <vtkDataArray.h> #include <vtkDataArray.h>
#include <vtkDataSet.h> #include <vtkDataSet.h>
...@@ -212,8 +212,10 @@ avtOpenGL3DTextureVolumeRenderer::Render( ...@@ -212,8 +212,10 @@ avtOpenGL3DTextureVolumeRenderer::Render(
{ {
static bool haveIssuedWarning = false; static bool haveIssuedWarning = false;
#ifdef HAVE_LIBGLEW
if(!(avt::glew::supported("GL_VERSION_1_2") || if(!(avt::glew::supported("GL_VERSION_1_2") ||
avt::glew::supported("GL_EXT_texture3D"))) avt::glew::supported("GL_EXT_texture3D")))
#endif
{ {
if(!haveIssuedWarning) if(!haveIssuedWarning)
{ {
......
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
#include "avtOpenGLSplattingVolumeRenderer.h" #include "avtOpenGLSplattingVolumeRenderer.h"
#include <avtGLEWInitializer.h> #include <avtOpenGLExtensionManager.h>
#include <vtkCellArray.h> #include <vtkCellArray.h>
#include <vtkCellData.h> #include <vtkCellData.h>
......
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
#include <tuvok/Renderer/GL/GLFrameCapture.h> #include <tuvok/Renderer/GL/GLFrameCapture.h>
#include <avtCallback.h> #include <avtCallback.h>
#include <avtGLEWInitializer.h> #include <avtOpenGLExtensionManager.h>
#include <avtParallel.h> #include <avtParallel.h>
#include <avtViewInfo.h> #include <avtViewInfo.h>
#include <DebugStream.h> #include <DebugStream.h>
......
This diff is collapsed.
<!-- begin header.html -->
<!--
The OpenGL Extension Wrangler Library
Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
Copyright (C) 2002, Lev Povalahev
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.