← Back to team overview

yade-dev team mailing list archive

[svn] r1790 - in trunk: . core extra extra/tetra lib lib/opengl pkg/common pkg/common/DataClass/BoundingVolume pkg/common/DataClass/GeometricalModel pkg/common/DataClass/Widgets pkg/dem pkg/dem/DataClass/InteractionGeometry pkg/lattice pkg/snow

 

Author: eudoxos
Date: 2009-06-04 17:50:18 +0200 (Thu, 04 Jun 2009)
New Revision: 1790

Modified:
   trunk/SConstruct
   trunk/core/yade.cpp
   trunk/extra/SConscript
   trunk/extra/Shop.cpp
   trunk/extra/tetra/Tetra.cpp
   trunk/extra/tetra/Tetra.hpp
   trunk/lib/SConscript
   trunk/lib/opengl/OpenGLWrapper.hpp
   trunk/pkg/common/DataClass/BoundingVolume/BoundingSphere.cpp
   trunk/pkg/common/DataClass/GeometricalModel/Box.cpp
   trunk/pkg/common/DataClass/GeometricalModel/BshTube.cpp
   trunk/pkg/common/DataClass/GeometricalModel/Facet.cpp
   trunk/pkg/common/DataClass/GeometricalModel/Mesh2D.cpp
   trunk/pkg/common/DataClass/GeometricalModel/Sphere.cpp
   trunk/pkg/common/DataClass/Widgets/ColorScale.cpp
   trunk/pkg/common/SConscript
   trunk/pkg/dem/ConcretePM.cpp
   trunk/pkg/dem/ConcretePM.hpp
   trunk/pkg/dem/DataClass/InteractionGeometry/Dem3DofGeom_FacetSphere.cpp
   trunk/pkg/dem/DataClass/InteractionGeometry/Dem3DofGeom_FacetSphere.hpp
   trunk/pkg/dem/DataClass/InteractionGeometry/Dem3DofGeom_SphereSphere.cpp
   trunk/pkg/dem/DataClass/InteractionGeometry/Dem3DofGeom_SphereSphere.hpp
   trunk/pkg/dem/SConscript
   trunk/pkg/lattice/SConscript
   trunk/pkg/snow/SConscript
Log:
Add new 'feature' to scons called openGL, which is on by default.
Qt3 GUI will not be built without openGL.
YADE_OPENGL is defined in openGL-enabled builds.
Sconscript files adapted to skip GL plugins or GL parts of plugins.

You can test by running:

scons exclude=qt3,fem,... features=log4cxx,python



Modified: trunk/SConstruct
===================================================================
--- trunk/SConstruct	2009-06-04 14:17:27 UTC (rev 1789)
+++ trunk/SConstruct	2009-06-04 15:50:18 UTC (rev 1790)
@@ -129,7 +129,7 @@
 	ListVariable('exclude','Yade components that will not be built','none',names=['qt3','gui','extra','common','dem','fem','lattice','mass-spring','realtime-rigidbody','snow']),
 	EnumVariable('arcs','Whether to generate or use branch probabilities','',['','gen','use'],{'no':'','0':'','false':''},1),
 	# OK, dummy prevents bug in scons: if one selects all, it says all in scons.config, but without quotes, which generates error.
-	ListVariable('features','Optional features that are turned on','python,log4cxx,gl',names=['gl','python','log4cxx','binfmt','CGAL','dummy']),
+	ListVariable('features','Optional features that are turned on','python,log4cxx,openGL',names=['openGL','python','log4cxx','binfmt','CGAL','dummy']),
 	('jobs','Number of jobs to run at the same time (same as -j, but saved)',4,None,int),
 	('extraModules', 'Extra directories with their own SConscript files (must be in-tree) (whitespace separated)',None,None,Split),
 	('buildPrefix','Where to create build-[version][variant] directory for intermediary files','..'),
@@ -295,7 +295,6 @@
 			Exit(1)
 	# check essential libs
 	ok&=conf.CheckLibWithHeader('pthread','pthread.h','c','pthread_exit(NULL);',autoadd=1)
-	ok&=conf.CheckLibWithHeader('glut','GL/glut.h','c','glutGetModifiers();',autoadd=1)
 
 	# gentoo has threaded flavour named differently and it must have precedence over the non-threaded one
 	def CheckLib_maybeMT(conf,lib,header,lang,func): return conf.CheckLibWithHeader(lib+'-mt',['limits.h',header],'c++',func,autoadd=1) or conf.CheckLibWithHeader(lib,['limits.h',header],lang,func,autoadd=1)
@@ -310,10 +309,6 @@
 
 	if not env['useMiniWm3']: ok&=conf.CheckLibWithHeader('Wm3Foundation','Wm3Math.h','c++','Wm3::Math<double>::PI;',autoadd=1)
 
-	if 'qt3' not in env['exclude']:
-		ok&=conf.CheckQt(env['QTDIR'])
-		env.Tool('qt'); env.Replace(QT_LIB='qt-mt')
-		env['QGLVIEWER_LIB']='yade-QGLViewer';
 
 	if not ok:
 		print "\nOne of the essential libraries above was not found, unable to continue.\n\nCheck `%s' for possible causes, note that there are options that you may need to customize:\n\n"%(buildDir+'/config.log')+opts.GenerateHelpText(env)
@@ -322,9 +317,20 @@
 		print "\nERROR: Unable to compile with optional feature `%s'.\n\nIf you are sure, remove it from features (scons features=featureOne,featureTwo for example) and build again."%featureName
 		Exit(1)
 	# check "optional" libs
+	if 'openGL' in env['features']:
+		ok=conf.CheckLibWithHeader('glut','GL/glut.h','c','glutGetModifiers();',autoadd=1)
+		if not ok: featureNotOK('openGL')
+		env.Append(CPPDEFINES='YADE_OPENGL')
+	if 'qt3' not in env['exclude']:
+		if 'openGL' not in env['features']:
+			print "\nQt3 interface can only be used if openGL is enabled.\nEither add openGL to 'features' or add qt3 to 'exclude'."
+			Exit(1)
+		ok&=conf.CheckQt(env['QTDIR'])
+		env.Tool('qt'); env.Replace(QT_LIB='qt-mt')
+		env['QGLVIEWER_LIB']='yade-QGLViewer';
+
 	if 'log4cxx' in env['features']:
 		ok=conf.CheckLibWithHeader('log4cxx','log4cxx/logger.h','c++','log4cxx::Logger::getLogger("");',autoadd=1)
-			#env.Append(CPPDEFINES=[('LOG4CXX','9'])
 		if not ok: featureNotOK('log4cxx')
 		env.Append(CPPDEFINES=['LOG4CXX'])
 	if 'python' in env['features']:
@@ -400,19 +406,6 @@
 	env.Append(CXXFLAGS=Split('-O3 -march=%s'%env['march']),
 		CPPDEFINES=[('YADE_CAST','static_cast'),('YADE_PTR_CAST','static_pointer_cast'),'NDEBUG'])
 	# NDEBUG is used in /usr/include/assert.h: when defined, asserts() are no-ops
-
-	# -floop-optimize2 is a gcc-4.x flag, doesn't exist on previous version
-	# CRASH -ffloat-store
-	# maybe not CRASH?: -fno-math-errno
-	# CRASH?: -fmodulo-sched  
-	#   it is probably --ffast-fath that crashes !!!
-	# gcc-4.1 only: -funsafe-loop-optimizations -Wunsafe-loop-optimizations
-	# sure CRASH: -ftree-vectorize
-	# CRASH (one of them): -fivopts -fgcse-sm -fgcse-las (one of them - not sure which one exactly)
-	# ?: -ftree-loop-linear -ftree-loop-ivcanon
-	## this will fail on non-i386 archs (includeing AMD64)
-	#archFlags=Split('-march=pentium4 -mfpmath=sse,387') #-malign-double')
-	#env.Append(CXXFLAGS=archFlags,LINKFLAGS=archFlags,SHLINKFLAGS=archFlags)
 else:
 	env.Append(CPPDEFINES=[('YADE_CAST','dynamic_cast'),('YADE_PTR_CAST','dynamic_pointer_cast')])
 
@@ -423,7 +416,6 @@
 if env['arcs']=='use': env.Append(CXXFLAGS=['-fprofile-use'],LINKFLAGS=['-fprofile-use'])
 
 ### LINKER
-#env['NONPLUGIN_LIBS']=env['LIBS']
 ## libs for all plugins
 # Investigate whether soname is useful for something. Probably not: SHLINKFLAGS=['-Wl,-soname=${TARGET.file},'-rdynamic']
 env.Append(LIBS=[],SHLINKFLAGS=['-rdynamic'])
@@ -435,7 +427,6 @@
 # makes dynamic library loading easier (no LD_LIBRARY_PATH) and perhaps faster
 env.Append(RPATH=runtimeLibDirs)
 # find already compiled but not yet installed libraries for linking
-#env.Append(LIBPATH=[os.path.join('#',x) for x in libDirs]	# -floop-optimize2 is a gcc-4.x flag, doesn't exist on previous version
 env.Append(LIBPATH=instLibDirs) # this is if we link to libs that are installed, which is the case now
 
 
@@ -449,7 +440,6 @@
 	if not prefix: yadeRoot=buildDir
 	else: yadeRoot=prefix
 	yadeInc=join(yadeRoot,'include','yade-%s'%env['version'],'yade')
-	#print "CALLED, prefix=%s, yadeInc=%s"%(prefix,yadeInc)
 
 	paths = ['.']
 	for root, dirs, files in os.walk('.'):
@@ -467,7 +457,6 @@
 			if re.match(r'^.*/('+'|'.join(env['exclude'])+')/',root): continue
 			for f in files:
 				if f.split('.')[-1] in ('hpp','inl','ipp','tpp','h','mcr'):
-					#m=re.match('^\./([^/]*)/.*$',root)
 					m=re.match('^.*?'+sep+'((extra|core)|((gui|lib|pkg)'+sep+'.*?))(|'+sep+'.*)$',root)
 					if not m:
 						print "WARNING: file %s skipped while scanning for headers (no module)"

Modified: trunk/core/yade.cpp
===================================================================
--- trunk/core/yade.cpp	2009-06-04 14:17:27 UTC (rev 1789)
+++ trunk/core/yade.cpp	2009-06-04 15:50:18 UTC (rev 1790)
@@ -101,8 +101,12 @@
 {
 	string cfgFile=Omega::instance().yadeConfigPath+"/preferences.xml";
 	LOG_INFO("Creating default configuration file: "<<cfgFile<<". Tune by hand if needed.");
-	LOG_INFO("Setting GUI: QtGUI.");
-	pref->defaultGUILibName="QtGUI";
+	#ifdef YADE_OPENGL
+		pref->defaultGUILibName="QtGUI";
+	#else
+		pref->defaultGUILibName="PythonUI";
+	#endif
+	LOG_INFO("Setting GUI: "<<pref->defaultGUILibName);
 	IOFormatManager::saveToFile("XMLFormatManager",cfgFile,"preferences",pref);
 }
 
@@ -152,6 +156,9 @@
 	#ifdef LOG4CXX
 		"   LOG4CXX       (configurable logging framework enabled; ~/.yade-" SUFFIX "/logging.conf)\n"
 	#endif
+	#ifdef YADE_OPENGL
+		"   YADE_OPENGL   (3d rendering)\n"
+	#endif
 	;
 	if(!isnan(std::numeric_limits<double>::quiet_NaN())) cerr<<
 		"   -ffast-math?  WARNING: NaN's will not work"<<endl;
@@ -268,7 +275,11 @@
 	}
 
 	if(gui.size()==0) gui=Omega::instance().preferences->defaultGUILibName;
-	if(!explicitUI && gui=="PythonUI" && !getenv("TERM")){ LOG_WARN("No $TERM, using QtGUI instead of PythonUI"); gui="QtGUI"; }
+	#ifdef YADE_OPENGL
+		if(!explicitUI && gui=="PythonUI" && !getenv("TERM")){ LOG_WARN("No $TERM, using QtGUI instead of PythonUI"); gui="QtGUI"; }
+	#else
+		if(gui=="QtGUI"){LOG_WARN("openGL-less build, using PythonUI instead of QtGUI"); gui="PythonUI";}
+	#endif
 	if(gui=="QtGUI" && !getenv("DISPLAY")){ LOG_WARN("No $DISPLAY, using PythonUI instead of QtUI"); gui="PythonUI"; }
 		
 	shared_ptr<FrontEnd> frontEnd = dynamic_pointer_cast<FrontEnd>(ClassFactory::instance().createShared(gui));

Modified: trunk/extra/SConscript
===================================================================
--- trunk/extra/SConscript	2009-06-04 14:17:27 UTC (rev 1789)
+++ trunk/extra/SConscript	2009-06-04 15:50:18 UTC (rev 1790)
@@ -75,7 +75,6 @@
 			'SimpleViscoelasticBodyParameters',
 			'SDECLinkGeometry',
 			'SDECLinkPhysics',
-			'$QGLVIEWER_LIB'
 			]),
 ])
 

Modified: trunk/extra/Shop.cpp
===================================================================
--- trunk/extra/Shop.cpp	2009-06-04 14:17:27 UTC (rev 1789)
+++ trunk/extra/Shop.cpp	2009-06-04 15:50:18 UTC (rev 1790)
@@ -57,10 +57,7 @@
 #include<yade/pkg-dem/SpheresContactGeometry.hpp>
 #include<yade/pkg-dem/ElasticContactInteraction.hpp>
 
-#include<yade/lib-opengl/OpenGLWrapper.hpp>
-#include<yade/lib-QGLViewer/qglviewer.h>
 
-
 #include<yade/extra/Tetra.hpp>
 
 

Modified: trunk/extra/tetra/Tetra.cpp
===================================================================
--- trunk/extra/tetra/Tetra.cpp	2009-06-04 14:17:27 UTC (rev 1789)
+++ trunk/extra/tetra/Tetra.cpp	2009-06-04 15:50:18 UTC (rev 1790)
@@ -3,14 +3,17 @@
 #include"Tetra.hpp"
 
 YADE_PLUGIN(/* self-contained in hpp: */ "TetraMold", "TetraBang", "Tetrahedron2TetraMold","TetraAABB", 
-	/* some code in cpp (this file): */ "TetraLaw",	 "Tetra2TetraBang","TetraDraw");
+	/* some code in cpp (this file): */ "TetraLaw",	 "Tetra2TetraBang"
+	#ifdef YADE_OPENGL
+		,"TetraDraw"
+	#endif	
+	);
 
 
 #include<yade/core/Interaction.hpp>
 #include<yade/core/Omega.hpp>
 #include<yade/core/MetaBody.hpp>
 
-#include<yade/lib-opengl/OpenGLWrapper.hpp>
 
 #include<yade/pkg-common/AABB.hpp>
 #include<yade/pkg-common/Tetrahedron.hpp>
@@ -411,36 +414,37 @@
 	}
 }
 
-
-void TetraDraw::go(const shared_ptr<InteractingGeometry>& cm, const shared_ptr<PhysicalParameters>&,bool)
-{
-  	glMaterialv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,Vector3f(cm->diffuseColor[0],cm->diffuseColor[1],cm->diffuseColor[2]));
-	glColor3v(cm->diffuseColor);
-	TetraMold* t=static_cast<TetraMold*>(cm.get());
-	if (0) { // wireframe, as for Tetrahedron
-		glDisable(GL_LIGHTING);
-		glBegin(GL_LINES);
-			#define __ONEWIRE(a,b) glVertex3v(t->v[a]);glVertex3v(t->v[b])
-				__ONEWIRE(0,1);__ONEWIRE(0,2);__ONEWIRE(0,3);__ONEWIRE(1,2);__ONEWIRE(1,3);__ONEWIRE(2,3);
-			#undef __ONEWIRE
-		glEnd();
-	}
-	else
+#ifdef YADE_OPENGL
+	#include<yade/lib-opengl/OpenGLWrapper.hpp>
+	void TetraDraw::go(const shared_ptr<InteractingGeometry>& cm, const shared_ptr<PhysicalParameters>&,bool)
 	{
-		Vector3r center = (t->v[0]+t->v[1]+t->v[2]+t->v[3])*.25, faceCenter, n;
-		glDisable(GL_CULL_FACE); glEnable(GL_LIGHTING);
-		glBegin(GL_TRIANGLES);
-			#define __ONEFACE(a,b,c) n=(t->v[b]-t->v[a]).UnitCross(t->v[c]-t->v[a]); faceCenter=(t->v[a]+t->v[b]+t->v[c])/3.; if((faceCenter-center).Dot(n)<0)n=-n; glNormal3v(n); glVertex3v(t->v[a]); glVertex3v(t->v[b]); glVertex3v(t->v[c]);
-				__ONEFACE(3,0,1);
-				__ONEFACE(0,1,2);
-				__ONEFACE(1,2,3);
-				__ONEFACE(2,3,0);
-			#undef __ONEFACE
-		glEnd();
+		glMaterialv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,Vector3f(cm->diffuseColor[0],cm->diffuseColor[1],cm->diffuseColor[2]));
+		glColor3v(cm->diffuseColor);
+		TetraMold* t=static_cast<TetraMold*>(cm.get());
+		if (0) { // wireframe, as for Tetrahedron
+			glDisable(GL_LIGHTING);
+			glBegin(GL_LINES);
+				#define __ONEWIRE(a,b) glVertex3v(t->v[a]);glVertex3v(t->v[b])
+					__ONEWIRE(0,1);__ONEWIRE(0,2);__ONEWIRE(0,3);__ONEWIRE(1,2);__ONEWIRE(1,3);__ONEWIRE(2,3);
+				#undef __ONEWIRE
+			glEnd();
+		}
+		else
+		{
+			Vector3r center = (t->v[0]+t->v[1]+t->v[2]+t->v[3])*.25, faceCenter, n;
+			glDisable(GL_CULL_FACE); glEnable(GL_LIGHTING);
+			glBegin(GL_TRIANGLES);
+				#define __ONEFACE(a,b,c) n=(t->v[b]-t->v[a]).UnitCross(t->v[c]-t->v[a]); faceCenter=(t->v[a]+t->v[b]+t->v[c])/3.; if((faceCenter-center).Dot(n)<0)n=-n; glNormal3v(n); glVertex3v(t->v[a]); glVertex3v(t->v[b]); glVertex3v(t->v[c]);
+					__ONEFACE(3,0,1);
+					__ONEFACE(0,1,2);
+					__ONEFACE(1,2,3);
+					__ONEFACE(2,3,0);
+				#undef __ONEFACE
+			glEnd();
+		}
 	}
+#endif
 
-}
-
 /*! Calculates tetrahedron inertia relative to the origin (0,0,0), with unit density (scales linearly).
 
 See article F. Tonon, "Explicit Exact Formulas for the 3-D Tetrahedron Inertia Tensor in Terms of its Vertex Coordinates", http://www.scipub.org/fulltext/jms2/jms2118-11.pdf

Modified: trunk/extra/tetra/Tetra.hpp
===================================================================
--- trunk/extra/tetra/Tetra.hpp	2009-06-04 14:17:27 UTC (rev 1789)
+++ trunk/extra/tetra/Tetra.hpp	2009-06-04 15:50:18 UTC (rev 1790)
@@ -12,7 +12,6 @@
 #include<yade/pkg-common/AABB.hpp>
 #include<yade/pkg-common/BoundingVolumeEngineUnit.hpp>
 #include<yade/pkg-common/InteractingGeometryEngineUnit.hpp>
-#include<yade/pkg-common/GLDrawFunctors.hpp>
 #include<yade/pkg-common/InteractionGeometryEngineUnit.hpp>
 
 #include<Wm3Math.h>
@@ -112,21 +111,21 @@
 };
 REGISTER_SERIALIZABLE(TetraAABB);
 
+#ifdef YADE_OPENGL
+	#include<yade/pkg-common/GLDrawFunctors.hpp>
+	/*! Draw TetraMold using OpenGL */
+	class TetraDraw: public GLDrawInteractingGeometryFunctor
+	{	
+		public:
+			virtual void go(const shared_ptr<InteractingGeometry>&, const shared_ptr<PhysicalParameters>&,bool);
 
-/*! Draw TetraMold using OpenGL */
+			RENDERS(TetraMold);
+			REGISTER_CLASS_NAME(TetraDraw);
+			REGISTER_BASE_CLASS_NAME(GLDrawInteractingGeometryFunctor);
+	};
+	REGISTER_SERIALIZABLE(TetraDraw);
+#endif
 
-class TetraDraw: public GLDrawInteractingGeometryFunctor
-{	
-	public:
-		virtual void go(const shared_ptr<InteractingGeometry>&, const shared_ptr<PhysicalParameters>&,bool);
-
-		RENDERS(TetraMold);
-		REGISTER_CLASS_NAME(TetraDraw);
-		REGISTER_BASE_CLASS_NAME(GLDrawInteractingGeometryFunctor);
-};
-REGISTER_SERIALIZABLE(TetraDraw);
-
-
 /*! Calculate physical response based on penetration configuration given by TetraBang. */
 
 class TetraLaw: public InteractionSolver {

Modified: trunk/lib/SConscript
===================================================================
--- trunk/lib/SConscript	2009-06-04 14:17:27 UTC (rev 1789)
+++ trunk/lib/SConscript	2009-06-04 15:50:18 UTC (rev 1790)
@@ -57,7 +57,19 @@
 			env.SharedLibrary('BINFormatManager',['serialization-bin/BINFormatManager.cpp']),
 		])
 
+if 'YADE_OPENGL' in env['CPPDEFINES']:
+	env.Install('$PREFIX/lib/yade$SUFFIX/lib',[
+		env.SharedLibrary('yade-opengl',
+			['opengl/FpsTracker.cpp',
+				'opengl/GLTextLabel.cpp',
+				'opengl/GLWindow.cpp',
+				'opengl/GLWindowsManager.cpp',
+				'opengl/GLUtils.cpp'],
+			LIBS=env['LIBS']+['glut','$QGLVIEWER_LIB']),
+	])
 
+
+
 env.Install('$PREFIX/lib/yade$SUFFIX/lib',[
 
 	env.SharedLibrary('yade-base',
@@ -109,15 +121,6 @@
 		['multimethods/Indexable.cpp',
 			'multimethods/MultiMethodsExceptions.cpp']),
 
-	env.SharedLibrary('yade-opengl',
-		['opengl/FpsTracker.cpp',
-			'opengl/GLTextLabel.cpp',
-			'opengl/GLWindow.cpp',
-			'opengl/GLWindowsManager.cpp',
-			'opengl/GLUtils.cpp'],
-		LIBS=env['LIBS']+['glut','$QGLVIEWER_LIB']),
-
-
 	env.SharedLibrary('XMLFormatManager',
 		['serialization-xml/XMLFormatManager.cpp',
 			'serialization-xml/XMLSaxParser.cpp'],

Modified: trunk/lib/opengl/OpenGLWrapper.hpp
===================================================================
--- trunk/lib/opengl/OpenGLWrapper.hpp	2009-06-04 14:17:27 UTC (rev 1789)
+++ trunk/lib/opengl/OpenGLWrapper.hpp	2009-06-04 15:50:18 UTC (rev 1790)
@@ -8,6 +8,10 @@
 
 #pragma once
 
+#ifndef YADE_OPENGL
+#error "This build doesn't support openGL. Therefore, this header must not be used."
+#endif
+
 #include <Wm3Vector3.h>
 #include<yade/lib-base/yadeWm3.hpp>
 

Modified: trunk/pkg/common/DataClass/BoundingVolume/BoundingSphere.cpp
===================================================================
--- trunk/pkg/common/DataClass/BoundingVolume/BoundingSphere.cpp	2009-06-04 14:17:27 UTC (rev 1789)
+++ trunk/pkg/common/DataClass/BoundingVolume/BoundingSphere.cpp	2009-06-04 15:50:18 UTC (rev 1790)
@@ -8,10 +8,6 @@
 
 #include "BoundingSphere.hpp"
 
-
-#include<yade/lib-opengl/OpenGLWrapper.hpp>
-
-
 BoundingSphere::BoundingSphere () : BoundingVolume()
 {
 	createIndex();

Modified: trunk/pkg/common/DataClass/GeometricalModel/Box.cpp
===================================================================
--- trunk/pkg/common/DataClass/GeometricalModel/Box.cpp	2009-06-04 14:17:27 UTC (rev 1789)
+++ trunk/pkg/common/DataClass/GeometricalModel/Box.cpp	2009-06-04 15:50:18 UTC (rev 1790)
@@ -6,7 +6,6 @@
 *  GNU General Public License v2 or later. See file LICENSE for details. *
 *************************************************************************/
 
-#include<yade/lib-opengl/OpenGLWrapper.hpp>
 #include "Box.hpp"
 #include <iostream>
 

Modified: trunk/pkg/common/DataClass/GeometricalModel/BshTube.cpp
===================================================================
--- trunk/pkg/common/DataClass/GeometricalModel/BshTube.cpp	2009-06-04 14:17:27 UTC (rev 1789)
+++ trunk/pkg/common/DataClass/GeometricalModel/BshTube.cpp	2009-06-04 15:50:18 UTC (rev 1790)
@@ -7,7 +7,6 @@
 *************************************************************************/
 
 
-#include<yade/lib-opengl/OpenGLWrapper.hpp>
 #include "BshTube.hpp"
 #include <iostream>
 

Modified: trunk/pkg/common/DataClass/GeometricalModel/Facet.cpp
===================================================================
--- trunk/pkg/common/DataClass/GeometricalModel/Facet.cpp	2009-06-04 14:17:27 UTC (rev 1789)
+++ trunk/pkg/common/DataClass/GeometricalModel/Facet.cpp	2009-06-04 15:50:18 UTC (rev 1790)
@@ -7,7 +7,6 @@
 *************************************************************************/
 
 #include "Facet.hpp"
-#include<yade/lib-opengl/OpenGLWrapper.hpp>
 
 Facet::Facet () : GeometricalModel()
 {

Modified: trunk/pkg/common/DataClass/GeometricalModel/Mesh2D.cpp
===================================================================
--- trunk/pkg/common/DataClass/GeometricalModel/Mesh2D.cpp	2009-06-04 14:17:27 UTC (rev 1789)
+++ trunk/pkg/common/DataClass/GeometricalModel/Mesh2D.cpp	2009-06-04 15:50:18 UTC (rev 1790)
@@ -7,11 +7,6 @@
 *************************************************************************/
 
 #include "Mesh2D.hpp"
-
-
-#include<yade/lib-opengl/OpenGLWrapper.hpp>
-
-
 #include <iostream>
 
 

Modified: trunk/pkg/common/DataClass/GeometricalModel/Sphere.cpp
===================================================================
--- trunk/pkg/common/DataClass/GeometricalModel/Sphere.cpp	2009-06-04 14:17:27 UTC (rev 1789)
+++ trunk/pkg/common/DataClass/GeometricalModel/Sphere.cpp	2009-06-04 15:50:18 UTC (rev 1790)
@@ -7,7 +7,6 @@
 *************************************************************************/
 
 #include "Sphere.hpp"
-#include<yade/lib-opengl/OpenGLWrapper.hpp>
 
 Sphere::Sphere () : GeometricalModel()
 {

Modified: trunk/pkg/common/DataClass/Widgets/ColorScale.cpp
===================================================================
--- trunk/pkg/common/DataClass/Widgets/ColorScale.cpp	2009-06-04 14:17:27 UTC (rev 1789)
+++ trunk/pkg/common/DataClass/Widgets/ColorScale.cpp	2009-06-04 15:50:18 UTC (rev 1790)
@@ -7,7 +7,6 @@
 *************************************************************************/
 
 #include "ColorScale.hpp"
-#include<yade/lib-opengl/OpenGLWrapper.hpp>
 
 ColorScale::ColorScale () : GeometricalModel()
 {

Modified: trunk/pkg/common/SConscript
===================================================================
--- trunk/pkg/common/SConscript	2009-06-04 14:17:27 UTC (rev 1789)
+++ trunk/pkg/common/SConscript	2009-06-04 15:50:18 UTC (rev 1790)
@@ -141,47 +141,6 @@
 	env.SharedLibrary('PersistentSAPCollider',['Engine/StandAloneEngine/PersistentSAPCollider.cpp']),
 	env.SharedLibrary('DistantPersistentSAPCollider',['Engine/StandAloneEngine/DistantPersistentSAPCollider.cpp']),
 	env.SharedLibrary('PhysicalActionContainerReseter',['Engine/StandAloneEngine/PhysicalActionContainerReseter.cpp']),
-	env.SharedLibrary('GLDrawAABB',['RenderingEngine/GLDrawBoundingVolume/GLDrawAABB.cpp'],
-		LIBS=env['LIBS']+['yade-base','AABB','yade-opengl']),
-	env.SharedLibrary('GLDrawBoundingSphere',['RenderingEngine/GLDrawBoundingVolume/GLDrawBoundingSphere.cpp'],
-		LIBS=env['LIBS']+['yade-base','BoundingSphere','yade-opengl']),
-	env.SharedLibrary('GLDrawTetrahedron',['RenderingEngine/GLDrawGeometricalModel/GLDrawTetrahedron.cpp'],
-		LIBS=env['LIBS']+['yade-base','Tetrahedron','yade-opengl']),
-	env.SharedLibrary('GLDrawBox',['RenderingEngine/GLDrawGeometricalModel/GLDrawBox.cpp'],
-		LIBS=env['LIBS']+['yade-base','Box','yade-opengl']),
-	env.SharedLibrary('GLDrawMesh2D',['RenderingEngine/GLDrawGeometricalModel/GLDrawMesh2D.cpp'],
-		LIBS=env['LIBS']+['yade-base','Mesh2D','yade-opengl']),
-	env.SharedLibrary('GLDrawSphere',['RenderingEngine/GLDrawGeometricalModel/GLDrawSphere.cpp'],
-		LIBS=env['LIBS']+['yade-base','Sphere','yade-opengl']),               
-	env.SharedLibrary('GLDrawQuadrilateral',['RenderingEngine/GLDrawGeometricalModel/GLDrawQuadrilateral.cpp'],
-		LIBS=env['LIBS']+['yade-base','Quadrilateral','yade-opengl']),
-	env.SharedLibrary('GLDrawFacet',['RenderingEngine/GLDrawGeometricalModel/GLDrawFacet.cpp']
-	    ,LIBS=env['LIBS']+['yade-opengl','Facet']),
-	env.SharedLibrary('GLDrawInteractingBox',['RenderingEngine/GLDrawInteractingGeometry/GLDrawInteractingBox.cpp'],
-		LIBS=env['LIBS']+['yade-base','InteractingBox','yade-opengl']),
-	env.SharedLibrary('GLDrawInteractingSphere',['RenderingEngine/GLDrawInteractingGeometry/GLDrawInteractingSphere.cpp'],
-		LIBS=env['LIBS']+['yade-base','InteractingSphere','yade-opengl'],),
-         env.SharedLibrary('GLDrawBssSweptSphereLineSegment',['RenderingEngine/GLDrawInteractingGeometry/GLDrawBssSweptSphereLineSegment.cpp'],
-                LIBS=env['LIBS']+['yade-base','BssSweptSphereLineSegment','yade-opengl']),               
-	env.SharedLibrary('GLDrawMetaInteractingGeometry',['RenderingEngine/GLDrawInteractingGeometry/GLDrawMetaInteractingGeometry.cpp'],
-		LIBS=env['LIBS']+['yade-opengl']),
-	env.SharedLibrary('GLDrawInteractingFacet',['RenderingEngine/GLDrawInteractingGeometry/GLDrawInteractingFacet.cpp']
-	    ,LIBS=env['LIBS']+['yade-opengl','InteractingFacet']),
-	env.SharedLibrary('GLDrawBoxShadowVolume',['RenderingEngine/GLDrawShadowVolume/GLDrawBoxShadowVolume.cpp'],
-		LIBS=env['LIBS']+['Box','ParticleParameters','yade-opengl','RigidBodyParameters']),
-	env.SharedLibrary('GLDrawSphereShadowVolume',['RenderingEngine/GLDrawShadowVolume/GLDrawSphereShadowVolume.cpp'],
-		LIBS=env['LIBS']+['Sphere','ParticleParameters','yade-opengl']),
-	env.SharedLibrary('GLDrawClosestFeatures',['RenderingEngine/GLDrawInteractionGeometry/GLDrawClosestFeatures.cpp'],
-		LIBS=env['LIBS']+['yade-base','ClosestFeatures','yade-opengl']),
-	env.SharedLibrary('GLDrawNormalInteraction',['RenderingEngine/GLDrawInteractionPhysics/GLDrawNormalInteraction.cpp'],LIBS=env['LIBS']+['yade-opengl','NormalShearInteractions']),
-	env.SharedLibrary('GLDrawParticleState',['RenderingEngine/GLDrawState/GLDrawParticleState.cpp'],
-		LIBS=env['LIBS']+['yade-base','ParticleParameters','yade-opengl']),
-	env.SharedLibrary('GLDrawColorScale',['RenderingEngine/GLDrawWidgets/GLDrawColorScale.cpp'],
-		LIBS=env['LIBS']+['yade-base','ColorScale','yade-opengl']),
-	env.SharedLibrary('GLDrawRigidBodyState',['RenderingEngine/GLDrawState/GLDrawRigidBodyState.cpp'],
-		LIBS=env['LIBS']+['ParticleParameters','RigidBodyParameters','GLDrawParticleState','yade-opengl']),
-	env.SharedLibrary('OpenGLRenderingEngine',['RenderingEngine/OpenGLRenderingEngine/OpenGLRenderingEngine.cpp'],
-		LIBS=env['LIBS']+['yade-base',  'glut', 'GLU', 'GL']),
                 
 # In the following, there is maybe too much defined LIBS (?)
         env.SharedLibrary('BshTube',['DataClass/GeometricalModel/BshTube.cpp'],
@@ -197,8 +156,52 @@
                         ['Engine/EngineUnit/ef2_BssSweptSphereLineSegment_AABB_makeAABB.cpp'],
                 LIBS=env['LIBS']+['BoundingVolumeMetaEngine','AABB','BssSweptSphereLineSegment']),
         
-        env.SharedLibrary('GLDrawTube',['RenderingEngine/GLDrawGeometricalModel/GLDrawTube.cpp'],
-                        LIBS=env['LIBS']+['yade-base','BshTube','yade-opengl']),
                 
 ])
 
+if 'YADE_OPENGL' in env['CPPDEFINES']:
+	env.Install('$PREFIX/lib/yade$SUFFIX/pkg-common',[
+		env.SharedLibrary('GLDrawAABB',['RenderingEngine/GLDrawBoundingVolume/GLDrawAABB.cpp'],
+			LIBS=env['LIBS']+['yade-base','AABB','yade-opengl']),
+		env.SharedLibrary('GLDrawBoundingSphere',['RenderingEngine/GLDrawBoundingVolume/GLDrawBoundingSphere.cpp'],
+			LIBS=env['LIBS']+['yade-base','BoundingSphere','yade-opengl']),
+		env.SharedLibrary('GLDrawTetrahedron',['RenderingEngine/GLDrawGeometricalModel/GLDrawTetrahedron.cpp'],
+			LIBS=env['LIBS']+['yade-base','Tetrahedron','yade-opengl']),
+		env.SharedLibrary('GLDrawBox',['RenderingEngine/GLDrawGeometricalModel/GLDrawBox.cpp'],
+			LIBS=env['LIBS']+['yade-base','Box','yade-opengl']),
+		env.SharedLibrary('GLDrawMesh2D',['RenderingEngine/GLDrawGeometricalModel/GLDrawMesh2D.cpp'],
+			LIBS=env['LIBS']+['yade-base','Mesh2D','yade-opengl']),
+		env.SharedLibrary('GLDrawSphere',['RenderingEngine/GLDrawGeometricalModel/GLDrawSphere.cpp'],
+			LIBS=env['LIBS']+['yade-base','Sphere','yade-opengl']),               
+		env.SharedLibrary('GLDrawQuadrilateral',['RenderingEngine/GLDrawGeometricalModel/GLDrawQuadrilateral.cpp'],
+			LIBS=env['LIBS']+['yade-base','Quadrilateral','yade-opengl']),
+		env.SharedLibrary('GLDrawFacet',['RenderingEngine/GLDrawGeometricalModel/GLDrawFacet.cpp']
+			 ,LIBS=env['LIBS']+['yade-opengl','Facet']),
+		env.SharedLibrary('GLDrawInteractingBox',['RenderingEngine/GLDrawInteractingGeometry/GLDrawInteractingBox.cpp'],
+			LIBS=env['LIBS']+['yade-base','InteractingBox','yade-opengl']),
+		env.SharedLibrary('GLDrawInteractingSphere',['RenderingEngine/GLDrawInteractingGeometry/GLDrawInteractingSphere.cpp'],
+			LIBS=env['LIBS']+['yade-base','InteractingSphere','yade-opengl'],),
+				env.SharedLibrary('GLDrawBssSweptSphereLineSegment',['RenderingEngine/GLDrawInteractingGeometry/GLDrawBssSweptSphereLineSegment.cpp'],
+						 LIBS=env['LIBS']+['yade-base','BssSweptSphereLineSegment','yade-opengl']),               
+		env.SharedLibrary('GLDrawMetaInteractingGeometry',['RenderingEngine/GLDrawInteractingGeometry/GLDrawMetaInteractingGeometry.cpp'],
+			LIBS=env['LIBS']+['yade-opengl']),
+		env.SharedLibrary('GLDrawInteractingFacet',['RenderingEngine/GLDrawInteractingGeometry/GLDrawInteractingFacet.cpp']
+			 ,LIBS=env['LIBS']+['yade-opengl','InteractingFacet']),
+		env.SharedLibrary('GLDrawBoxShadowVolume',['RenderingEngine/GLDrawShadowVolume/GLDrawBoxShadowVolume.cpp'],
+			LIBS=env['LIBS']+['Box','ParticleParameters','yade-opengl','RigidBodyParameters']),
+		env.SharedLibrary('GLDrawSphereShadowVolume',['RenderingEngine/GLDrawShadowVolume/GLDrawSphereShadowVolume.cpp'],
+			LIBS=env['LIBS']+['Sphere','ParticleParameters','yade-opengl']),
+		env.SharedLibrary('GLDrawClosestFeatures',['RenderingEngine/GLDrawInteractionGeometry/GLDrawClosestFeatures.cpp'],
+			LIBS=env['LIBS']+['yade-base','ClosestFeatures','yade-opengl']),
+		env.SharedLibrary('GLDrawNormalInteraction',['RenderingEngine/GLDrawInteractionPhysics/GLDrawNormalInteraction.cpp'],LIBS=env['LIBS']+['yade-opengl','NormalShearInteractions']),
+		env.SharedLibrary('GLDrawParticleState',['RenderingEngine/GLDrawState/GLDrawParticleState.cpp'],
+			LIBS=env['LIBS']+['yade-base','ParticleParameters','yade-opengl']),
+		env.SharedLibrary('GLDrawColorScale',['RenderingEngine/GLDrawWidgets/GLDrawColorScale.cpp'],
+			LIBS=env['LIBS']+['yade-base','ColorScale','yade-opengl']),
+		env.SharedLibrary('GLDrawRigidBodyState',['RenderingEngine/GLDrawState/GLDrawRigidBodyState.cpp'],
+			LIBS=env['LIBS']+['ParticleParameters','RigidBodyParameters','GLDrawParticleState','yade-opengl']),
+		env.SharedLibrary('OpenGLRenderingEngine',['RenderingEngine/OpenGLRenderingEngine/OpenGLRenderingEngine.cpp'],
+			LIBS=env['LIBS']+['yade-base',  'glut', 'GLU', 'GL']),
+		env.SharedLibrary('GLDrawTube',['RenderingEngine/GLDrawGeometricalModel/GLDrawTube.cpp'],
+			LIBS=env['LIBS']+['yade-base','BshTube','yade-opengl']),
+	])

Modified: trunk/pkg/dem/ConcretePM.cpp
===================================================================
--- trunk/pkg/dem/ConcretePM.cpp	2009-06-04 14:17:27 UTC (rev 1789)
+++ trunk/pkg/dem/ConcretePM.cpp	2009-06-04 15:50:18 UTC (rev 1790)
@@ -3,12 +3,14 @@
 #include<yade/core/MetaBody.hpp>
 #include<yade/pkg-dem/BodyMacroParameters.hpp>
 #include<yade/pkg-common/Sphere.hpp>
-#include<yade/lib-QGLViewer/qglviewer.h>
-#include<yade/lib-opengl/GLUtils.hpp>
 #include<yade/pkg-dem/DemXDofGeom.hpp>
 #include<yade/extra/Shop.hpp>
 
-YADE_PLUGIN("CpmMat","Ip2_CpmMat_CpmMat_CpmPhys","CpmPhys","Law2_Dem3DofGeom_CpmPhys_Cpm","CpmGlobalCharacteristics","GLDrawCpmPhys","CpmPhysDamageColorizer");
+YADE_PLUGIN("CpmMat","Ip2_CpmMat_CpmMat_CpmPhys","CpmPhys","Law2_Dem3DofGeom_CpmPhys_Cpm","CpmGlobalCharacteristics",
+	#ifdef YADE_OPENGL
+		"GLDrawCpmPhys",
+	#endif	
+		"CpmPhysDamageColorizer");
 
 
 /********************** Ip2_CpmMat_CpmMat_CpmPhys ****************************/
@@ -206,79 +208,80 @@
 	applyForceAtContactPoint(BC->normalForce+BC->shearForce, contGeom->contactPoint, I->getId1(), contGeom->se31.position, I->getId2(), contGeom->se32.position, rootBody);
 }
 
+#ifdef YADE_OPENGL
+	/********************** GLDrawCpmPhys ****************************/
+	#include<yade/lib-opengl/OpenGLWrapper.hpp>
+	#include<yade/lib-opengl/GLUtils.hpp>
+	#include<yade/lib-QGLViewer/qglviewer.h>
 
-/********************** GLDrawCpmPhys ****************************/
+	CREATE_LOGGER(GLDrawCpmPhys);
 
-#include<yade/lib-opengl/OpenGLWrapper.hpp>
+	bool GLDrawCpmPhys::contactLine=true;
+	bool GLDrawCpmPhys::dmgLabel=true;
+	bool GLDrawCpmPhys::dmgPlane=false;
+	bool GLDrawCpmPhys::epsNLabel=true;
+	bool GLDrawCpmPhys::epsT=false;
+	bool GLDrawCpmPhys::epsTAxes=false;
+	bool GLDrawCpmPhys::normal=false;
+	bool GLDrawCpmPhys::colorStrain=false;
 
-CREATE_LOGGER(GLDrawCpmPhys);
 
-bool GLDrawCpmPhys::contactLine=true;
-bool GLDrawCpmPhys::dmgLabel=true;
-bool GLDrawCpmPhys::dmgPlane=false;
-bool GLDrawCpmPhys::epsNLabel=true;
-bool GLDrawCpmPhys::epsT=false;
-bool GLDrawCpmPhys::epsTAxes=false;
-bool GLDrawCpmPhys::normal=false;
-bool GLDrawCpmPhys::colorStrain=false;
+	void GLDrawCpmPhys::go(const shared_ptr<InteractionPhysics>& ip, const shared_ptr<Interaction>& i, const shared_ptr<Body>& b1, const shared_ptr<Body>& b2, bool wireFrame){
+		const shared_ptr<CpmPhys>& BC=static_pointer_cast<CpmPhys>(ip);
+		const shared_ptr<Dem3DofGeom>& geom=YADE_PTR_CAST<Dem3DofGeom>(i->interactionGeometry);
 
+		//Vector3r lineColor(BC->omega,1-BC->omega,0.0); /* damaged links red, undamaged green */
+		Vector3r lineColor=Shop::scalarOnColorScale(1.-BC->relResidualStrength);
 
-void GLDrawCpmPhys::go(const shared_ptr<InteractionPhysics>& ip, const shared_ptr<Interaction>& i, const shared_ptr<Body>& b1, const shared_ptr<Body>& b2, bool wireFrame){
-	const shared_ptr<CpmPhys>& BC=static_pointer_cast<CpmPhys>(ip);
-	const shared_ptr<Dem3DofGeom>& geom=YADE_PTR_CAST<Dem3DofGeom>(i->interactionGeometry);
+		if(colorStrain) lineColor=Vector3r(
+			min((Real)1.,max((Real)0.,-BC->epsTrans/BC->epsCrackOnset)),
+			min((Real)1.,max((Real)0.,BC->epsTrans/BC->epsCrackOnset)),
+			min((Real)1.,max((Real)0.,abs(BC->epsTrans)/BC->epsCrackOnset-1)));
 
-	//Vector3r lineColor(BC->omega,1-BC->omega,0.0); /* damaged links red, undamaged green */
-	Vector3r lineColor=Shop::scalarOnColorScale(1.-BC->relResidualStrength);
+		if(contactLine) GLUtils::GLDrawLine(b1->physicalParameters->dispSe3.position,b2->physicalParameters->dispSe3.position,lineColor);
+		if(dmgLabel){ GLUtils::GLDrawNum(BC->omega,0.5*(b1->physicalParameters->dispSe3.position+b2->physicalParameters->dispSe3.position),lineColor); }
+		else if(epsNLabel){ GLUtils::GLDrawNum(BC->epsN,0.5*(b1->physicalParameters->dispSe3.position+b2->physicalParameters->dispSe3.position),lineColor); }
+		if(BC->omega>0 && dmgPlane){
+			Real halfSize=sqrt(1-BC->relResidualStrength)*.5*.705*sqrt(BC->crossSection);
+			Vector3r midPt=.5*Vector3r(b1->physicalParameters->dispSe3.position+b2->physicalParameters->dispSe3.position);
+			glDisable(GL_CULL_FACE);
+			glPushMatrix();
+				glTranslatev(midPt);
+				Quaternionr q; q.Align(Vector3r::UNIT_Z,geom->normal);
+				Vector3r axis; Real angle; q.ToAxisAngle(axis,angle);
+				glRotatef(angle*Mathr::RAD_TO_DEG,axis[0],axis[1],axis[2]);
+				glBegin(GL_POLYGON);
+					glColor3v(lineColor); 
+					glVertex3d(halfSize,0.,0.);
+					glVertex3d(.5*halfSize,.866*halfSize,0.);
+					glVertex3d(-.5*halfSize,.866*halfSize,0.);
+					glVertex3d(-halfSize,0.,0.);
+					glVertex3d(-.5*halfSize,-.866*halfSize,0.);
+					glVertex3d(.5*halfSize,-.866*halfSize,0.);
+				glEnd();
+			glPopMatrix();
+		}
 
-	if(colorStrain) lineColor=Vector3r(
-		min((Real)1.,max((Real)0.,-BC->epsTrans/BC->epsCrackOnset)),
-		min((Real)1.,max((Real)0.,BC->epsTrans/BC->epsCrackOnset)),
-		min((Real)1.,max((Real)0.,abs(BC->epsTrans)/BC->epsCrackOnset-1)));
+		const Vector3r& cp=static_pointer_cast<Dem3DofGeom>(i->interactionGeometry)->contactPoint;
+		if(epsT){
+			Real maxShear=(BC->undamagedCohesion-BC->sigmaN*BC->tanFrictionAngle)/BC->G;
+			Real relShear=BC->epsT.Length()/maxShear;
+			Real scale=.5*geom->refLength;
+			Vector3r dirShear=BC->epsT; dirShear.Normalize();
+			if(epsTAxes){
+				GLUtils::GLDrawLine(cp-Vector3r(scale,0,0),cp+Vector3r(scale,0,0));
+				GLUtils::GLDrawLine(cp-Vector3r(0,scale,0),cp+Vector3r(0,scale,0));
+				GLUtils::GLDrawLine(cp-Vector3r(0,0,scale),cp+Vector3r(0,0,scale));
+			}
+			GLUtils::GLDrawArrow(cp,cp+dirShear*relShear*scale,Vector3r(1.,0.,0.));
+			GLUtils::GLDrawLine(cp+dirShear*relShear*scale,cp+dirShear*scale,Vector3r(.3,.3,.3));
 
-	if(contactLine) GLUtils::GLDrawLine(b1->physicalParameters->dispSe3.position,b2->physicalParameters->dispSe3.position,lineColor);
-	if(dmgLabel){ GLUtils::GLDrawNum(BC->omega,0.5*(b1->physicalParameters->dispSe3.position+b2->physicalParameters->dispSe3.position),lineColor); }
-	else if(epsNLabel){ GLUtils::GLDrawNum(BC->epsN,0.5*(b1->physicalParameters->dispSe3.position+b2->physicalParameters->dispSe3.position),lineColor); }
-	if(BC->omega>0 && dmgPlane){
-		Real halfSize=sqrt(1-BC->relResidualStrength)*.5*.705*sqrt(BC->crossSection);
-		Vector3r midPt=.5*Vector3r(b1->physicalParameters->dispSe3.position+b2->physicalParameters->dispSe3.position);
-		glDisable(GL_CULL_FACE);
-		glPushMatrix();
-			glTranslatev(midPt);
-			Quaternionr q; q.Align(Vector3r::UNIT_Z,geom->normal);
-			Vector3r axis; Real angle; q.ToAxisAngle(axis,angle);
-			glRotatef(angle*Mathr::RAD_TO_DEG,axis[0],axis[1],axis[2]);
-			glBegin(GL_POLYGON);
-				glColor3v(lineColor); 
-				glVertex3d(halfSize,0.,0.);
-				glVertex3d(.5*halfSize,.866*halfSize,0.);
-				glVertex3d(-.5*halfSize,.866*halfSize,0.);
-				glVertex3d(-halfSize,0.,0.);
-				glVertex3d(-.5*halfSize,-.866*halfSize,0.);
-				glVertex3d(.5*halfSize,-.866*halfSize,0.);
-			glEnd();
-		glPopMatrix();
-	}
-
-	const Vector3r& cp=static_pointer_cast<Dem3DofGeom>(i->interactionGeometry)->contactPoint;
-	if(epsT){
-		Real maxShear=(BC->undamagedCohesion-BC->sigmaN*BC->tanFrictionAngle)/BC->G;
-		Real relShear=BC->epsT.Length()/maxShear;
-		Real scale=.5*geom->refLength;
-		Vector3r dirShear=BC->epsT; dirShear.Normalize();
-		if(epsTAxes){
-			GLUtils::GLDrawLine(cp-Vector3r(scale,0,0),cp+Vector3r(scale,0,0));
-			GLUtils::GLDrawLine(cp-Vector3r(0,scale,0),cp+Vector3r(0,scale,0));
-			GLUtils::GLDrawLine(cp-Vector3r(0,0,scale),cp+Vector3r(0,0,scale));
+			/* normal strain */ GLUtils::GLDrawArrow(cp,cp+geom->normal*(BC->epsN/maxShear),Vector3r(0.,1.,0.));
 		}
-		GLUtils::GLDrawArrow(cp,cp+dirShear*relShear*scale,Vector3r(1.,0.,0.));
-		GLUtils::GLDrawLine(cp+dirShear*relShear*scale,cp+dirShear*scale,Vector3r(.3,.3,.3));
-
-		/* normal strain */ GLUtils::GLDrawArrow(cp,cp+geom->normal*(BC->epsN/maxShear),Vector3r(0.,1.,0.));
+		//if(normal) GLUtils::GLDrawArrow(cp,cp+geom->normal*.5*BC->equilibriumDist,Vector3r(0.,1.,0.));
 	}
-	//if(normal) GLUtils::GLDrawArrow(cp,cp+geom->normal*.5*BC->equilibriumDist,Vector3r(0.,1.,0.));
-}
+#endif
 
-
 /********************** CpmGlobalCharacteristics ****************************/
 
 CREATE_LOGGER(CpmGlobalCharacteristics);

Modified: trunk/pkg/dem/ConcretePM.hpp
===================================================================
--- trunk/pkg/dem/ConcretePM.hpp	2009-06-04 14:17:27 UTC (rev 1789)
+++ trunk/pkg/dem/ConcretePM.hpp	2009-06-04 15:50:18 UTC (rev 1790)
@@ -50,7 +50,6 @@
 #include<yade/pkg-dem/BodyMacroParameters.hpp>
 #include<yade/pkg-common/InteractionPhysicsEngineUnit.hpp>
 #include<yade/pkg-dem/SpheresContactGeometry.hpp>
-#include<yade/pkg-common/GLDrawFunctors.hpp>
 #include<yade/pkg-common/PeriodicEngines.hpp>
 #include<yade/pkg-common/NormalShearInteractions.hpp>
 #include<yade/pkg-common/ConstitutiveLaw.hpp>
@@ -292,16 +291,19 @@
 };
 REGISTER_SERIALIZABLE(CpmGlobalCharacteristics);
 
-class GLDrawCpmPhys: public GLDrawInteractionPhysicsFunctor {
-	public: virtual void go(const shared_ptr<InteractionPhysics>&,const shared_ptr<Interaction>&,const shared_ptr<Body>&,const shared_ptr<Body>&,bool wireFrame);
-	virtual ~GLDrawCpmPhys() {};
-	REGISTER_ATTRIBUTES(/*no base*/,(contactLine)(dmgLabel)(dmgPlane)(epsT)(epsTAxes)(normal)(colorStrain)(epsNLabel));
-	RENDERS(CpmPhys);
-	REGISTER_CLASS_AND_BASE(GLDrawCpmPhys,GLDrawInteractionPhysicsFunctor);
-	DECLARE_LOGGER;
-	static bool contactLine,dmgLabel,dmgPlane,epsT,epsTAxes,normal,colorStrain,epsNLabel;
-};
-REGISTER_SERIALIZABLE(GLDrawCpmPhys);
+#ifdef YADE_OPENGL
+	#include<yade/pkg-common/GLDrawFunctors.hpp>
+	class GLDrawCpmPhys: public GLDrawInteractionPhysicsFunctor {
+		public: virtual void go(const shared_ptr<InteractionPhysics>&,const shared_ptr<Interaction>&,const shared_ptr<Body>&,const shared_ptr<Body>&,bool wireFrame);
+		virtual ~GLDrawCpmPhys() {};
+		REGISTER_ATTRIBUTES(/*no base*/,(contactLine)(dmgLabel)(dmgPlane)(epsT)(epsTAxes)(normal)(colorStrain)(epsNLabel));
+		RENDERS(CpmPhys);
+		REGISTER_CLASS_AND_BASE(GLDrawCpmPhys,GLDrawInteractionPhysicsFunctor);
+		DECLARE_LOGGER;
+		static bool contactLine,dmgLabel,dmgPlane,epsT,epsTAxes,normal,colorStrain,epsNLabel;
+	};
+	REGISTER_SERIALIZABLE(GLDrawCpmPhys);
+#endif
 
 class CpmPhysDamageColorizer: public PeriodicEngine {
 	struct BodyStats{ short nCohLinks; Real dmgSum; Real epsPlSum; BodyStats(): nCohLinks(0), dmgSum(0), epsPlSum(0.){} };

Modified: trunk/pkg/dem/DataClass/InteractionGeometry/Dem3DofGeom_FacetSphere.cpp
===================================================================
--- trunk/pkg/dem/DataClass/InteractionGeometry/Dem3DofGeom_FacetSphere.cpp	2009-06-04 14:17:27 UTC (rev 1789)
+++ trunk/pkg/dem/DataClass/InteractionGeometry/Dem3DofGeom_FacetSphere.cpp	2009-06-04 15:50:18 UTC (rev 1790)
@@ -1,7 +1,11 @@
 #include "Dem3DofGeom_FacetSphere.hpp"
 #include<yade/pkg-common/InteractingSphere.hpp>
 #include<yade/pkg-common/InteractingFacet.hpp>
-YADE_PLUGIN("Dem3DofGeom_FacetSphere","GLDraw_Dem3DofGeom_FacetSphere","ef2_Facet_Sphere_Dem3DofGeom");
+YADE_PLUGIN("Dem3DofGeom_FacetSphere",
+	#ifdef YADE_OPENGL
+		"GLDraw_Dem3DofGeom_FacetSphere",
+	#endif	
+		"ef2_Facet_Sphere_Dem3DofGeom");
 
 CREATE_LOGGER(Dem3DofGeom_FacetSphere);
 Dem3DofGeom_FacetSphere::~Dem3DofGeom_FacetSphere(){}
@@ -152,46 +156,48 @@
 	return true;
 }
 
-#include<yade/lib-opengl/OpenGLWrapper.hpp>
-#include<yade/lib-opengl/GLUtils.hpp>
+#ifdef YADE_OPENGL
 
-bool GLDraw_Dem3DofGeom_FacetSphere::normal=false;
-bool GLDraw_Dem3DofGeom_FacetSphere::rolledPoints=false;
-bool GLDraw_Dem3DofGeom_FacetSphere::unrolledPoints=false;
-bool GLDraw_Dem3DofGeom_FacetSphere::shear=false;
-bool GLDraw_Dem3DofGeom_FacetSphere::shearLabel=false;
+	#include<yade/lib-opengl/OpenGLWrapper.hpp>
+	#include<yade/lib-opengl/GLUtils.hpp>
 
-void GLDraw_Dem3DofGeom_FacetSphere::go(const shared_ptr<InteractionGeometry>& ig, const shared_ptr<Interaction>& ip, const shared_ptr<Body>& b1, const shared_ptr<Body>& b2, bool wireFrame){
-	Dem3DofGeom_FacetSphere* fs = static_cast<Dem3DofGeom_FacetSphere*>(ig.get());
-	//const Se3r& se31=b1->physicalParameters->dispSe3,se32=b2->physicalParameters->dispSe3;
-	const Se3r& se31=b1->physicalParameters->se3,se32=b2->physicalParameters->se3;
-	const Vector3r& pos1=se31.position; const Vector3r& pos2=se32.position;
-	const Quaternionr& ori1=se31.orientation; const Quaternionr& ori2=se32.orientation;
-	const Vector3r& contPt=fs->contactPoint;
-	
-	if(normal){
-		GLUtils::GLDrawArrow(contPt,contPt+fs->refLength*fs->normal); // normal of the contact
-	}
-	// sphere center to point on the sphere
-	if(rolledPoints){
-		//cerr<<pos1<<" "<<pos1+ori1*fs->cp1pt<<" "<<contPt<<endl;
-		GLUtils::GLDrawLine(pos1+ori1*fs->cp1pt,contPt,Vector3r(0,.5,1));
-		GLUtils::GLDrawLine(pos2,pos2+(ori2*fs->cp2rel*Vector3r::UNIT_X*fs->effR2),Vector3r(0,1,.5));
-	}
-	// contact point to projected points
-	if(unrolledPoints||shear){
-		Vector3r ptTg1=fs->contPtInTgPlane1(), ptTg2=fs->contPtInTgPlane2();
-		if(unrolledPoints){
-			//TRVAR3(ptTg1,ptTg2,ss->normal)
-			GLUtils::GLDrawLine(contPt,contPt+ptTg1,Vector3r(0,.5,1));
-			GLUtils::GLDrawLine(contPt,contPt+ptTg2,Vector3r(0,1,.5)); GLUtils::GLDrawLine(pos2,contPt+ptTg2,Vector3r(0,1,.5));
+	bool GLDraw_Dem3DofGeom_FacetSphere::normal=false;
+	bool GLDraw_Dem3DofGeom_FacetSphere::rolledPoints=false;
+	bool GLDraw_Dem3DofGeom_FacetSphere::unrolledPoints=false;
+	bool GLDraw_Dem3DofGeom_FacetSphere::shear=false;
+	bool GLDraw_Dem3DofGeom_FacetSphere::shearLabel=false;
+
+	void GLDraw_Dem3DofGeom_FacetSphere::go(const shared_ptr<InteractionGeometry>& ig, const shared_ptr<Interaction>& ip, const shared_ptr<Body>& b1, const shared_ptr<Body>& b2, bool wireFrame){
+		Dem3DofGeom_FacetSphere* fs = static_cast<Dem3DofGeom_FacetSphere*>(ig.get());
+		//const Se3r& se31=b1->physicalParameters->dispSe3,se32=b2->physicalParameters->dispSe3;
+		const Se3r& se31=b1->physicalParameters->se3,se32=b2->physicalParameters->se3;
+		const Vector3r& pos1=se31.position; const Vector3r& pos2=se32.position;
+		const Quaternionr& ori1=se31.orientation; const Quaternionr& ori2=se32.orientation;
+		const Vector3r& contPt=fs->contactPoint;
+		
+		if(normal){
+			GLUtils::GLDrawArrow(contPt,contPt+fs->refLength*fs->normal); // normal of the contact
 		}
-		if(shear){
-			GLUtils::GLDrawLine(contPt+ptTg1,contPt+ptTg2,Vector3r(1,1,1));
-			if(shearLabel) GLUtils::GLDrawNum(fs->displacementT().Length(),contPt,Vector3r(1,1,1));
+		// sphere center to point on the sphere
+		if(rolledPoints){
+			//cerr<<pos1<<" "<<pos1+ori1*fs->cp1pt<<" "<<contPt<<endl;
+			GLUtils::GLDrawLine(pos1+ori1*fs->cp1pt,contPt,Vector3r(0,.5,1));
+			GLUtils::GLDrawLine(pos2,pos2+(ori2*fs->cp2rel*Vector3r::UNIT_X*fs->effR2),Vector3r(0,1,.5));
 		}
+		// contact point to projected points
+		if(unrolledPoints||shear){
+			Vector3r ptTg1=fs->contPtInTgPlane1(), ptTg2=fs->contPtInTgPlane2();
+			if(unrolledPoints){
+				//TRVAR3(ptTg1,ptTg2,ss->normal)
+				GLUtils::GLDrawLine(contPt,contPt+ptTg1,Vector3r(0,.5,1));
+				GLUtils::GLDrawLine(contPt,contPt+ptTg2,Vector3r(0,1,.5)); GLUtils::GLDrawLine(pos2,contPt+ptTg2,Vector3r(0,1,.5));
+			}
+			if(shear){
+				GLUtils::GLDrawLine(contPt+ptTg1,contPt+ptTg2,Vector3r(1,1,1));
+				if(shearLabel) GLUtils::GLDrawNum(fs->displacementT().Length(),contPt,Vector3r(1,1,1));
+			}
+		}
 	}
-}
 
+#endif
 
-

Modified: trunk/pkg/dem/DataClass/InteractionGeometry/Dem3DofGeom_FacetSphere.hpp
===================================================================
--- trunk/pkg/dem/DataClass/InteractionGeometry/Dem3DofGeom_FacetSphere.hpp	2009-06-04 14:17:27 UTC (rev 1789)
+++ trunk/pkg/dem/DataClass/InteractionGeometry/Dem3DofGeom_FacetSphere.hpp	2009-06-04 15:50:18 UTC (rev 1790)
@@ -38,16 +38,18 @@
 };
 REGISTER_SERIALIZABLE(Dem3DofGeom_FacetSphere);
 
-#include<yade/pkg-common/GLDrawFunctors.hpp>
-class GLDraw_Dem3DofGeom_FacetSphere:public GLDrawInteractionGeometryFunctor{
-	public:
-		virtual void go(const shared_ptr<InteractionGeometry>&,const shared_ptr<Interaction>&,const shared_ptr<Body>&,const shared_ptr<Body>&,bool wireFrame);
-		static bool normal,rolledPoints,unrolledPoints,shear,shearLabel;
-	RENDERS(Dem3DofGeom_FacetSphere);
-	REGISTER_CLASS_AND_BASE(GLDraw_Dem3DofGeom_FacetSphere,GLDrawInteractionGeometryFunctor);
-	REGISTER_ATTRIBUTES(GLDrawInteractionGeometryFunctor, (normal)(rolledPoints)(unrolledPoints)(shear)(shearLabel) );
-};
-REGISTER_SERIALIZABLE(GLDraw_Dem3DofGeom_FacetSphere);
+#ifdef YADE_OPENGL
+	#include<yade/pkg-common/GLDrawFunctors.hpp>
+	class GLDraw_Dem3DofGeom_FacetSphere:public GLDrawInteractionGeometryFunctor{
+		public:
+			virtual void go(const shared_ptr<InteractionGeometry>&,const shared_ptr<Interaction>&,const shared_ptr<Body>&,const shared_ptr<Body>&,bool wireFrame);
+			static bool normal,rolledPoints,unrolledPoints,shear,shearLabel;
+		RENDERS(Dem3DofGeom_FacetSphere);
+		REGISTER_CLASS_AND_BASE(GLDraw_Dem3DofGeom_FacetSphere,GLDrawInteractionGeometryFunctor);
+		REGISTER_ATTRIBUTES(GLDrawInteractionGeometryFunctor, (normal)(rolledPoints)(unrolledPoints)(shear)(shearLabel) );
+	};
+	REGISTER_SERIALIZABLE(GLDraw_Dem3DofGeom_FacetSphere);
+#endif
 
 #include<yade/pkg-common/InteractionGeometryEngineUnit.hpp>
 class ef2_Facet_Sphere_Dem3DofGeom:public InteractionGeometryEngineUnit{

Modified: trunk/pkg/dem/DataClass/InteractionGeometry/Dem3DofGeom_SphereSphere.cpp
===================================================================
--- trunk/pkg/dem/DataClass/InteractionGeometry/Dem3DofGeom_SphereSphere.cpp	2009-06-04 14:17:27 UTC (rev 1789)
+++ trunk/pkg/dem/DataClass/InteractionGeometry/Dem3DofGeom_SphereSphere.cpp	2009-06-04 15:50:18 UTC (rev 1790)
@@ -2,7 +2,11 @@
 
 #include<yade/pkg-common/InteractingSphere.hpp>
 #include<yade/core/Omega.hpp>
-YADE_PLUGIN("Dem3DofGeom_SphereSphere","GLDraw_Dem3DofGeom_SphereSphere","ef2_Sphere_Sphere_Dem3DofGeom");
+YADE_PLUGIN("Dem3DofGeom_SphereSphere",
+	#ifdef YADE_OPENGL
+		"GLDraw_Dem3DofGeom_SphereSphere",
+	#endif
+	"ef2_Sphere_Sphere_Dem3DofGeom");
 
 
 Dem3DofGeom_SphereSphere::~Dem3DofGeom_SphereSphere(){}
@@ -88,66 +92,63 @@
 	}
 }
 
+#ifdef YADE_OPENGL
+	#include<yade/lib-opengl/OpenGLWrapper.hpp>
+	#include<yade/lib-opengl/GLUtils.hpp>
+	bool GLDraw_Dem3DofGeom_SphereSphere::normal=false;
+	bool GLDraw_Dem3DofGeom_SphereSphere::rolledPoints=false;
+	bool GLDraw_Dem3DofGeom_SphereSphere::unrolledPoints=false;
+	bool GLDraw_Dem3DofGeom_SphereSphere::shear=false;
+	bool GLDraw_Dem3DofGeom_SphereSphere::shearLabel=false;
 
-#include<yade/lib-opengl/OpenGLWrapper.hpp>
-#include<yade/lib-opengl/GLUtils.hpp>
-
-
-
-bool GLDraw_Dem3DofGeom_SphereSphere::normal=false;
-bool GLDraw_Dem3DofGeom_SphereSphere::rolledPoints=false;
-bool GLDraw_Dem3DofGeom_SphereSphere::unrolledPoints=false;
-bool GLDraw_Dem3DofGeom_SphereSphere::shear=false;
-bool GLDraw_Dem3DofGeom_SphereSphere::shearLabel=false;
-
-void GLDraw_Dem3DofGeom_SphereSphere::go(const shared_ptr<InteractionGeometry>& ig, const shared_ptr<Interaction>& ip, const shared_ptr<Body>& b1, const shared_ptr<Body>& b2, bool wireFrame){
-	Dem3DofGeom_SphereSphere* ss = static_cast<Dem3DofGeom_SphereSphere*>(ig.get());
-	//const Se3r& se31=b1->physicalParameters->dispSe3,se32=b2->physicalParameters->dispSe3;
-	const Se3r& se31=b1->physicalParameters->se3,se32=b2->physicalParameters->se3;
-	const Vector3r& pos1=se31.position,pos2=se32.position;
-	Vector3r& contPt=ss->contactPoint;
-	
-	if(normal){
-		GLUtils::GLDrawArrow(contPt,contPt+ss->normal*.5*ss->refLength); // normal of the contact
-	}
-	#if 0
-		// never used, since bending/torsion not used
-		//Vector3r contPt=se31.position+(ss->effR1/ss->refLength)*(se32.position-se31.position); // must be recalculated to not be unscaled if scaling displacements ...
-		GLUtils::GLDrawLine(pos1,pos2,Vector3r(.5,.5,.5));
-		Vector3r bend; Real tors;
-		ss->bendingTorsionRel(bend,tors);
-		GLUtils::GLDrawLine(contPt,contPt+10*ss->radius1*(bend+ss->normal*tors),Vector3r(1,0,0));
+	void GLDraw_Dem3DofGeom_SphereSphere::go(const shared_ptr<InteractionGeometry>& ig, const shared_ptr<Interaction>& ip, const shared_ptr<Body>& b1, const shared_ptr<Body>& b2, bool wireFrame){
+		Dem3DofGeom_SphereSphere* ss = static_cast<Dem3DofGeom_SphereSphere*>(ig.get());
+		//const Se3r& se31=b1->physicalParameters->dispSe3,se32=b2->physicalParameters->dispSe3;
+		const Se3r& se31=b1->physicalParameters->se3,se32=b2->physicalParameters->se3;
+		const Vector3r& pos1=se31.position,pos2=se32.position;
+		Vector3r& contPt=ss->contactPoint;
+		
+		if(normal){
+			GLUtils::GLDrawArrow(contPt,contPt+ss->normal*.5*ss->refLength); // normal of the contact
+		}
 		#if 0
-			GLUtils::GLDrawNum(bend[0],contPt-.2*ss->normal*ss->radius1,Vector3r(1,0,0));
-			GLUtils::GLDrawNum(bend[1],contPt,Vector3r(0,1,0));
-			GLUtils::GLDrawNum(bend[2],contPt+.2*ss->normal*ss->radius1,Vector3r(0,0,1));
-			GLUtils::GLDrawNum(tors,contPt+.5*ss->normal*ss->radius2,Vector3r(1,1,0));
+			// never used, since bending/torsion not used
+			//Vector3r contPt=se31.position+(ss->effR1/ss->refLength)*(se32.position-se31.position); // must be recalculated to not be unscaled if scaling displacements ...
+			GLUtils::GLDrawLine(pos1,pos2,Vector3r(.5,.5,.5));
+			Vector3r bend; Real tors;
+			ss->bendingTorsionRel(bend,tors);
+			GLUtils::GLDrawLine(contPt,contPt+10*ss->radius1*(bend+ss->normal*tors),Vector3r(1,0,0));
+			#if 0
+				GLUtils::GLDrawNum(bend[0],contPt-.2*ss->normal*ss->radius1,Vector3r(1,0,0));
+				GLUtils::GLDrawNum(bend[1],contPt,Vector3r(0,1,0));
+				GLUtils::GLDrawNum(bend[2],contPt+.2*ss->normal*ss->radius1,Vector3r(0,0,1));
+				GLUtils::GLDrawNum(tors,contPt+.5*ss->normal*ss->radius2,Vector3r(1,1,0));
+			#endif
 		#endif
-	#endif
-	// sphere center to point on the sphere
-	if(rolledPoints){
-		GLUtils::GLDrawLine(pos1,pos1+(ss->ori1*ss->cp1rel*Vector3r::UNIT_X*ss->effR1),Vector3r(0,.5,1));
-		GLUtils::GLDrawLine(pos2,pos2+(ss->ori2*ss->cp2rel*Vector3r::UNIT_X*ss->effR2),Vector3r(0,1,.5));
-	}
-	//TRVAR4(pos1,ss->ori1,pos2,ss->ori2);
-	//TRVAR2(ss->cp2rel,pos2+(ss->ori2*ss->cp2rel*Vector3r::UNIT_X*ss->effR2));
-	// contact point to projected points
-	if(unrolledPoints||shear){
-		Vector3r ptTg1=ss->contPtInTgPlane1(), ptTg2=ss->contPtInTgPlane2();
-		if(unrolledPoints){
-			//TRVAR3(ptTg1,ptTg2,ss->normal)
-			GLUtils::GLDrawLine(contPt,contPt+ptTg1,Vector3r(0,.5,1)); GLUtils::GLDrawLine(pos1,contPt+ptTg1,Vector3r(0,.5,1));
-			GLUtils::GLDrawLine(contPt,contPt+ptTg2,Vector3r(0,1,.5)); GLUtils::GLDrawLine(pos2,contPt+ptTg2,Vector3r(0,1,.5));
+		// sphere center to point on the sphere
+		if(rolledPoints){
+			GLUtils::GLDrawLine(pos1,pos1+(ss->ori1*ss->cp1rel*Vector3r::UNIT_X*ss->effR1),Vector3r(0,.5,1));
+			GLUtils::GLDrawLine(pos2,pos2+(ss->ori2*ss->cp2rel*Vector3r::UNIT_X*ss->effR2),Vector3r(0,1,.5));
 		}
-		if(shear){
-			GLUtils::GLDrawLine(contPt+ptTg1,contPt+ptTg2,Vector3r(1,1,1));
-			if(shearLabel) GLUtils::GLDrawNum(ss->displacementT().Length(),contPt,Vector3r(1,1,1));
+		//TRVAR4(pos1,ss->ori1,pos2,ss->ori2);
+		//TRVAR2(ss->cp2rel,pos2+(ss->ori2*ss->cp2rel*Vector3r::UNIT_X*ss->effR2));
+		// contact point to projected points
+		if(unrolledPoints||shear){
+			Vector3r ptTg1=ss->contPtInTgPlane1(), ptTg2=ss->contPtInTgPlane2();
+			if(unrolledPoints){
+				//TRVAR3(ptTg1,ptTg2,ss->normal)
+				GLUtils::GLDrawLine(contPt,contPt+ptTg1,Vector3r(0,.5,1)); GLUtils::GLDrawLine(pos1,contPt+ptTg1,Vector3r(0,.5,1));
+				GLUtils::GLDrawLine(contPt,contPt+ptTg2,Vector3r(0,1,.5)); GLUtils::GLDrawLine(pos2,contPt+ptTg2,Vector3r(0,1,.5));
+			}
+			if(shear){
+				GLUtils::GLDrawLine(contPt+ptTg1,contPt+ptTg2,Vector3r(1,1,1));
+				if(shearLabel) GLUtils::GLDrawNum(ss->displacementT().Length(),contPt,Vector3r(1,1,1));
+			}
 		}
 	}
-}
+	CREATE_LOGGER(ef2_Sphere_Sphere_Dem3DofGeom);
+#endif
 
-CREATE_LOGGER(ef2_Sphere_Sphere_Dem3DofGeom);
-
 bool ef2_Sphere_Sphere_Dem3DofGeom::go(const shared_ptr<InteractingGeometry>& cm1, const shared_ptr<InteractingGeometry>& cm2, const Se3r& se31, const Se3r& se32, const shared_ptr<Interaction>& c){
 	InteractingSphere *s1=static_cast<InteractingSphere*>(cm1.get()), *s2=static_cast<InteractingSphere*>(cm2.get());
 	Vector3r normal=se32.position-se31.position;

Modified: trunk/pkg/dem/DataClass/InteractionGeometry/Dem3DofGeom_SphereSphere.hpp
===================================================================
--- trunk/pkg/dem/DataClass/InteractionGeometry/Dem3DofGeom_SphereSphere.hpp	2009-06-04 14:17:27 UTC (rev 1789)
+++ trunk/pkg/dem/DataClass/InteractionGeometry/Dem3DofGeom_SphereSphere.hpp	2009-06-04 15:50:18 UTC (rev 1790)
@@ -42,16 +42,18 @@
 };
 REGISTER_SERIALIZABLE(Dem3DofGeom_SphereSphere);
 
-#include<yade/pkg-common/GLDrawFunctors.hpp>
-class GLDraw_Dem3DofGeom_SphereSphere:public GLDrawInteractionGeometryFunctor{
-	public:
-		virtual void go(const shared_ptr<InteractionGeometry>&,const shared_ptr<Interaction>&,const shared_ptr<Body>&,const shared_ptr<Body>&,bool wireFrame);
-		static bool normal,rolledPoints,unrolledPoints,shear,shearLabel;
-	//RENDERS(Dem3DofGeom_SphereSphere);
-	//REGISTER_CLASS_AND_BASE(GLDraw_Dem3DofGeom_SphereSphere,GLDrawInteractionGeometryFunctor);
-	REGISTER_ATTRIBUTES(GLDrawInteractionGeometryFunctor,(normal)(rolledPoints)(unrolledPoints)(shear)(shearLabel));
-};
-REGISTER_SERIALIZABLE(GLDraw_Dem3DofGeom_SphereSphere);
+#ifdef YADE_OPENGL
+	#include<yade/pkg-common/GLDrawFunctors.hpp>
+	class GLDraw_Dem3DofGeom_SphereSphere:public GLDrawInteractionGeometryFunctor{
+		public:
+			virtual void go(const shared_ptr<InteractionGeometry>&,const shared_ptr<Interaction>&,const shared_ptr<Body>&,const shared_ptr<Body>&,bool wireFrame);
+			static bool normal,rolledPoints,unrolledPoints,shear,shearLabel;
+		//RENDERS(Dem3DofGeom_SphereSphere);
+		//REGISTER_CLASS_AND_BASE(GLDraw_Dem3DofGeom_SphereSphere,GLDrawInteractionGeometryFunctor);
+		REGISTER_ATTRIBUTES(GLDrawInteractionGeometryFunctor,(normal)(rolledPoints)(unrolledPoints)(shear)(shearLabel));
+	};
+	REGISTER_SERIALIZABLE(GLDraw_Dem3DofGeom_SphereSphere);
+#endif
 
 #include<yade/pkg-common/InteractionGeometryEngineUnit.hpp>
 class ef2_Sphere_Sphere_Dem3DofGeom:public InteractionGeometryEngineUnit{

Modified: trunk/pkg/dem/SConscript
===================================================================
--- trunk/pkg/dem/SConscript	2009-06-04 14:17:27 UTC (rev 1789)
+++ trunk/pkg/dem/SConscript	2009-06-04 15:50:18 UTC (rev 1790)
@@ -14,10 +14,6 @@
 				'SDECLinkGeometry',
 				'SpheresContactGeometry',
 				'BodyMacroParameters',
-				'yade-serialization',
-				'yade-base',
-				'GLDrawInteractingSphere',
-				'yade-multimethods',
 				'Sphere',
 				'RigidBodyParameters',
 				'InteractingSphere',
@@ -37,8 +33,8 @@
 env.Install('$PREFIX/lib/yade$SUFFIX/pkg-dem',[
 	
 	env.SharedLibrary('DemXDofGeom',['DataClass/InteractionGeometry/DemXDofGeom.cpp']),
-	env.SharedLibrary('Dem3DofGeom_SphereSphere',['DataClass/InteractionGeometry/Dem3DofGeom_SphereSphere.cpp'],LIBS=env['LIBS']+['RigidBodyParameters','InteractingSphere','yade-opengl','DemXDofGeom']),
-	env.SharedLibrary('Dem3DofGeom_FacetSphere',['DataClass/InteractionGeometry/Dem3DofGeom_FacetSphere.cpp'],LIBS=env['LIBS']+['RigidBodyParameters','InteractingSphere','InteractingFacet','yade-opengl','Dem3DofGeom_SphereSphere','DemXDofGeom']),
+	env.SharedLibrary('Dem3DofGeom_SphereSphere',['DataClass/InteractionGeometry/Dem3DofGeom_SphereSphere.cpp'],LIBS=env['LIBS']+['RigidBodyParameters','InteractingSphere','DemXDofGeom','yade-opengl' if 'YADE_OPENGL' in env['CPPDEFINES'] else '']),
+	env.SharedLibrary('Dem3DofGeom_FacetSphere',['DataClass/InteractionGeometry/Dem3DofGeom_FacetSphere.cpp'],LIBS=env['LIBS']+['RigidBodyParameters','InteractingSphere','InteractingFacet','Dem3DofGeom_SphereSphere','DemXDofGeom','yade-opengl' if 'YADE_OPENGL' in env['CPPDEFINES'] else '']),
 
 	env.SharedLibrary('FacetTopologyAnalyzer',['Engine/StandAloneEngine/FacetTopologyAnalyzer.cpp'],LIBS=env['LIBS']+['InteractingFacet']),
 
@@ -241,10 +237,6 @@
 			'DemXDofGeom',
 			'SpheresContactGeometry',
 			'BodyMacroParameters',
-			'yade-serialization',
-			'yade-base',
-			'GLDrawInteractingSphere',
-			'yade-multimethods',
 			'Sphere',
 			'RigidBodyParameters']),
 	
@@ -359,35 +351,7 @@
 			'TriaxialStressController',
 			'Shop']),
 
-	env.SharedLibrary('GLDrawInteractingMyTetrahedron',
-		['RenderingEngine/GLDrawInteractingMyTetrahedron/GLDrawInteractingMyTetrahedron.cpp'],
-		LIBS=env['LIBS']+['InteractingMyTetrahedron', 'yade-opengl']),
 
-	env.SharedLibrary('GLDrawCohesiveFrictionalContactInteraction',
-		['RenderingEngine/GLDrawCohesiveFrictionalContactInteraction/GLDrawCohesiveFrictionalContactInteraction.cpp'],
-		LIBS=env['LIBS']+['CohesiveFrictionalContactInteraction','SpheresContactGeometry',
-			'GLDrawElasticContactInteraction',
-			'ElasticContactInteraction',
-			'yade-opengl','$QGLVIEWER_LIB']),
-
-	env.SharedLibrary('GLDrawElasticContactInteraction',
-		['RenderingEngine/GLDrawElasticContactInteraction/GLDrawElasticContactInteraction.cpp'],
-		LIBS=env['LIBS']+['SpheresContactGeometry',
-			'ElasticContactInteraction',
-			'yade-opengl','$QGLVIEWER_LIB']),
-
-	env.SharedLibrary('GLDrawSpheresContactGeometry',
-		['RenderingEngine/GLDrawSpheresContactGeometry/GLDrawSpheresContactGeometry.cpp'],
-		LIBS=env['LIBS']+['SpheresContactGeometry',
-			'ElasticContactInteraction',
-			'yade-opengl','$QGLVIEWER_LIB']),
-
-	env.SharedLibrary('GLDrawSDECLinkGeometry',
-		['RenderingEngine/GLDrawSDECLinkGeometry/GLDrawSDECLinkGeometry.cpp'],
-		LIBS=env['LIBS']+['SDECLinkGeometry',
-			'SDECLinkPhysics',
-			'yade-opengl']),
-
 	env.SharedLibrary('Funnel',
 		['PreProcessor/Funnel.cpp'],
 		LIBS=env['LIBS']+['SDECLinkGeometry',
@@ -980,10 +944,6 @@
 		,['DataClass/InteractionPhysics/ViscoelasticInteraction.cpp']
 	    ,LIBS=env['LIBS']+['ElasticContactInteraction'])
     
-	,env.SharedLibrary('GLDrawViscoelasticInteraction'
-	    ,['RenderingEngine/GLDrawViscoelasticInteraction/GLDrawViscoelasticInteraction.cpp']
-	    ,LIBS=env['LIBS']+['yade-opengl','ViscoelasticInteraction'])
-
 	,env.SharedLibrary('SimpleViscoelasticRelationships'
 		,['Engine/EngineUnit/SimpleViscoelasticRelationships.cpp']
 		,LIBS=env['LIBS']+['SimpleViscoelasticBodyParameters'
@@ -1112,3 +1072,39 @@
 			#chdir='/home/bruno/YADE/trunk_svn/extra/triangulation')
 ])
 
+
+if 'YADE_OPENGL' in env['CPPDEFINES']:
+	env.Install('$PREFIX/lib/yade$SUFFIX/pkg-dem',[
+
+		env.SharedLibrary('GLDrawInteractingMyTetrahedron',
+			['RenderingEngine/GLDrawInteractingMyTetrahedron/GLDrawInteractingMyTetrahedron.cpp'],
+			LIBS=env['LIBS']+['InteractingMyTetrahedron', 'yade-opengl']),
+
+		env.SharedLibrary('GLDrawCohesiveFrictionalContactInteraction',
+			['RenderingEngine/GLDrawCohesiveFrictionalContactInteraction/GLDrawCohesiveFrictionalContactInteraction.cpp'],
+			LIBS=env['LIBS']+['CohesiveFrictionalContactInteraction','SpheresContactGeometry',
+				'GLDrawElasticContactInteraction',
+				'ElasticContactInteraction',
+				'yade-opengl','$QGLVIEWER_LIB']),
+
+		env.SharedLibrary('GLDrawElasticContactInteraction',
+			['RenderingEngine/GLDrawElasticContactInteraction/GLDrawElasticContactInteraction.cpp'],
+			LIBS=env['LIBS']+['SpheresContactGeometry',
+				'ElasticContactInteraction',
+				'yade-opengl','$QGLVIEWER_LIB']),
+
+		env.SharedLibrary('GLDrawSpheresContactGeometry',
+			['RenderingEngine/GLDrawSpheresContactGeometry/GLDrawSpheresContactGeometry.cpp'],
+			LIBS=env['LIBS']+['SpheresContactGeometry',
+				'ElasticContactInteraction',
+				'yade-opengl','$QGLVIEWER_LIB']),
+
+		env.SharedLibrary('GLDrawSDECLinkGeometry',
+			['RenderingEngine/GLDrawSDECLinkGeometry/GLDrawSDECLinkGeometry.cpp'],
+			LIBS=env['LIBS']+['SDECLinkGeometry',
+				'SDECLinkPhysics',
+				'yade-opengl']),
+		env.SharedLibrary('GLDrawViscoelasticInteraction'
+			 ,['RenderingEngine/GLDrawViscoelasticInteraction/GLDrawViscoelasticInteraction.cpp']
+			 ,LIBS=env['LIBS']+['yade-opengl','ViscoelasticInteraction'])
+	])

Modified: trunk/pkg/lattice/SConscript
===================================================================
--- trunk/pkg/lattice/SConscript	2009-06-04 14:17:27 UTC (rev 1789)
+++ trunk/pkg/lattice/SConscript	2009-06-04 15:50:18 UTC (rev 1790)
@@ -111,42 +111,6 @@
 			'LatticeNodeParameters'],
 		CPPPATH=env['CPPPATH']+['DataClass/PhysicalParameters']),
 
-	env.SharedLibrary('GLDrawLineSegment',
-		['RenderingEngine/GLDrawLineSegment/GLDrawLineSegment.cpp'],
-		LIBS=env['LIBS']+['yade-base',  'LineSegment', 'yade-opengl'],
-		CPPPATH=env['CPPPATH']+['DataClass/GeometricalModel']),
-
-	env.SharedLibrary('GLDrawLatticeBeamState',
-		['RenderingEngine/GLDrawLatticeBeamState/GLDrawLatticeBeamState.cpp'],
-		LIBS=env['LIBS']+['yade-base',  'LatticeBeamParameters', 'yade-opengl'],
-		CPPPATH=env['CPPPATH']+['DataClass/PhysicalParameters']),
-
-	env.SharedLibrary('GLDrawLatticeSetGeometry',
-		['RenderingEngine/GLDrawLatticeSetGeometry/GLDrawLatticeSetGeometry.cpp'],
-		LIBS=env['LIBS']+['yade-base',
-			'LatticeSetGeometry',
-			'LatticeSetParameters',
-			'LatticeBeamParameters',
-			'LatticeNodeParameters',
-			'yade-opengl',
-			'yade-computational-geometry'],
-		CPPPATH=env['CPPPATH']+['DataClass/GeometricalModel',
-			'DataClass/PhysicalParameters']),
-
-	env.SharedLibrary('GLDrawLatticeInteractingGeometry',
-		['RenderingEngine/GLDrawLatticeInteractingGeometry/GLDrawLatticeInteractingGeometry.cpp'],
-		LIBS=env['LIBS']+['yade-base',
-			'LatticeSetGeometry',
-			'LatticeSetParameters',
-			'LatticeBeamParameters',
-			'LatticeNodeParameters',
-			'LatticeInteractingGeometry',
-			'yade-opengl',
-			'yade-computational-geometry'],
-		CPPPATH=env['CPPPATH']+['DataClass/GeometricalModel',
-			'DataClass/InteractingGeometry',
-			'DataClass/PhysicalParameters']),
-
 	env.SharedLibrary('LatticeExampleSimple',
 		['PreProcessor/LatticeExampleSimple.cpp'],
 		LIBS=env['LIBS']+['yade-base',
@@ -259,3 +223,39 @@
 			'DataClass/PhysicalParameters'])
 ])
 
+if 'YADE_OPENGL' in env['CPPDEFINES']:
+	env.Install('$PREFIX/lib/yade$SUFFIX/pkg-lattice',[
+		env.SharedLibrary('GLDrawLineSegment',
+			['RenderingEngine/GLDrawLineSegment/GLDrawLineSegment.cpp'],
+			LIBS=env['LIBS']+['yade-base',  'LineSegment', 'yade-opengl'],
+			CPPPATH=env['CPPPATH']+['DataClass/GeometricalModel']),
+		env.SharedLibrary('GLDrawLatticeBeamState',
+			['RenderingEngine/GLDrawLatticeBeamState/GLDrawLatticeBeamState.cpp'],
+			LIBS=env['LIBS']+['yade-base',  'LatticeBeamParameters', 'yade-opengl'],
+			CPPPATH=env['CPPPATH']+['DataClass/PhysicalParameters']),
+		env.SharedLibrary('GLDrawLatticeSetGeometry',
+			['RenderingEngine/GLDrawLatticeSetGeometry/GLDrawLatticeSetGeometry.cpp'],
+			LIBS=env['LIBS']+['yade-base',
+				'LatticeSetGeometry',
+				'LatticeSetParameters',
+				'LatticeBeamParameters',
+				'LatticeNodeParameters',
+				'yade-opengl',
+				'yade-computational-geometry'],
+			CPPPATH=env['CPPPATH']+['DataClass/GeometricalModel',
+				'DataClass/PhysicalParameters']),
+		env.SharedLibrary('GLDrawLatticeInteractingGeometry',
+			['RenderingEngine/GLDrawLatticeInteractingGeometry/GLDrawLatticeInteractingGeometry.cpp'],
+			LIBS=env['LIBS']+['yade-base',
+				'LatticeSetGeometry',
+				'LatticeSetParameters',
+				'LatticeBeamParameters',
+				'LatticeNodeParameters',
+				'LatticeInteractingGeometry',
+				'yade-opengl',
+				'yade-computational-geometry'],
+			CPPPATH=env['CPPPATH']+['DataClass/GeometricalModel',
+				'DataClass/InteractingGeometry',
+				'DataClass/PhysicalParameters']),
+	])
+

Modified: trunk/pkg/snow/SConscript
===================================================================
--- trunk/pkg/snow/SConscript	2009-06-04 14:17:27 UTC (rev 1789)
+++ trunk/pkg/snow/SConscript	2009-06-04 15:50:18 UTC (rev 1790)
@@ -1,48 +1,102 @@
 # vim: set filetype=python :
 
 Import('*')
+
+if 'YADE_OPENGL' in env['CPPDEFINES']:
+	env.Install('$PREFIX/lib/yade$SUFFIX/pkg-snow',[
+		env.SharedLibrary('Ef1_IstSnowLayersContact_glDraw',
+			['RenderingEngine/Ef1_IstSnowLayersContact_glDraw.cpp'],
+			LIBS=env['LIBS']+['SpheresContactGeometry','ElasticContactInteraction','yade-opengl','IstSnowLayersContact',
+			'BshSnowGrain','BssSnowGrain','$QGLVIEWER_LIB']),
+		env.SharedLibrary('Ef1_BssSnowGrain_glDraw',['RenderingEngine/Ef1_BssSnowGrain_glDraw.cpp'],
+			LIBS=env['LIBS']+['BshSnowGrain','yade-opengl','yade-base','BssSnowGrain','GLDrawInteractingSphere','$QGLVIEWER_LIB']),
+		env.SharedLibrary('Ef1_BshSnowGrain_glDraw',['RenderingEngine/Ef1_BshSnowGrain_glDraw.cpp'],
+			LIBS=env['LIBS']+['BshSnowGrain','yade-opengl','yade-base','$QGLVIEWER_LIB']),
+		env.SharedLibrary('SnowVoxelsLoader',
+			['PreProcessor/SnowVoxelsLoader.cpp',
+			'PreProcessor/Voxel/DataSurface.cpp',
+			'PreProcessor/Voxel/DataVoxel.cpp',
+			'PreProcessor/Voxel/GrainSurface.cpp',
+			'PreProcessor/Voxel/SafeVectors3.cpp',
+			'PreProcessor/Voxel/VoxelEnvelope.cpp',
+			'PreProcessor/Voxel/Config.cpp'],
+			LIBS=env['LIBS']+['boost_serialization','boost_program_options']+['SDECLinkGeometry',
+				'CohesiveFrictionalContactLaw',
+				'AveragePositionRecorder',
+				'BshSnowGrain',
+				'BssSnowGrain',
+				'VelocityRecorder',
+				'Ef2_InteractingBox_BssSnowGrain_makeIstSnowLayersContact',
+				'Ef2_BssSnowGrain_BssSnowGrain_makeIstSnowLayersContact',
+				'Ef2_InteractingBox_BssSnowGrain_makeSpheresContactGeometry',
+				'Ef2_BssSnowGrain_BssSnowGrain_makeSpheresContactGeometry',
+				'ForceRecorder',
+				'CohesiveFrictionalRelationships',
+				'ElasticCriterionTimeStepper',
+				'InteractingSphere',
+				'InteractingBox',
+				'InteractingSphere2InteractingSphere4SpheresContactGeometry',
+				'InteractingBox2InteractingSphere4SpheresContactGeometry',
+				'ElawSnowLayersDeformation',
+				'CundallNonViscousDamping',
+				'CundallNonViscousDamping',
+				'MetaInteractingGeometry',
+				'GravityEngines',
+				'yade-serialization',
+				'PhysicalActionContainerReseter',
+				'InteractionGeometryMetaEngine',
+				'InteractionPhysicsMetaEngine',
+				'PhysicalActionApplier',
+				'PhysicalParametersMetaEngine',
+				'BoundingVolumeMetaEngine',
+				'yade-multimethods',
+				'Box',
+				'Sphere',
+				'AABB',
+				'DistantPersistentSAPCollider',
+				'MetaInteractingGeometry2AABB',
+				'TriaxialStressController',
+				'TriaxialCompressionEngine',
+				'GlobalStiffnessTimeStepper',
+				'yade-base',
+				'Shop',
+				'TriaxialStateRecorder',
+				'PositionOrientationRecorder',
+				'HydraulicForceEngine']),
+	])
+
+
 env.Install('$PREFIX/lib/yade$SUFFIX/pkg-snow',[
 
 
-	env.SharedLibrary('Ef1_IstSnowLayersContact_glDraw',
-		['RenderingEngine/Ef1_IstSnowLayersContact_glDraw.cpp'],
-		LIBS=env['LIBS']+['SpheresContactGeometry','ElasticContactInteraction','yade-opengl','IstSnowLayersContact',
-		'BshSnowGrain','BssSnowGrain','$QGLVIEWER_LIB']),
-
 	env.SharedLibrary('IstSnowLayersContact',
 		['DataClass/IstSnowLayersContact.cpp'],
 		LIBS=env['LIBS']+['yade-serialization','yade-base','SpheresContactGeometry']),
 
 	env.SharedLibrary('Ef2_InteractingBox_BssSnowGrain_makeIstSnowLayersContact',
 	['Engine/Ef2_InteractingBox_BssSnowGrain_makeIstSnowLayersContact.cpp'],
-		LIBS=env['LIBS']+['BshSnowGrain','yade-opengl','yade-base',
+		LIBS=env['LIBS']+['BshSnowGrain','yade-base',
 		'BssSnowGrain','InteractingBox','IstSnowLayersContact',
 		'Ef2_BssSnowGrain_BssSnowGrain_makeIstSnowLayersContact','Ef2_InteractingBox_BssSnowGrain_makeSpheresContactGeometry']),
 	
 	env.SharedLibrary('Ef2_BssSnowGrain_BssSnowGrain_makeIstSnowLayersContact',
 	['Engine/Ef2_BssSnowGrain_BssSnowGrain_makeIstSnowLayersContact.cpp'],
-		LIBS=env['LIBS']+['BshSnowGrain','yade-opengl','yade-base','IstSnowLayersContact',
+		LIBS=env['LIBS']+['BshSnowGrain','yade-base','IstSnowLayersContact',
 		'BssSnowGrain','InteractingSphere','Ef2_BssSnowGrain_BssSnowGrain_makeSpheresContactGeometry']),
 
 	env.SharedLibrary('Ef2_InteractingBox_BssSnowGrain_makeSpheresContactGeometry',
 	['Engine/Ef2_InteractingBox_BssSnowGrain_makeSpheresContactGeometry.cpp'],
-		LIBS=env['LIBS']+['BshSnowGrain','yade-opengl','yade-base',
+		LIBS=env['LIBS']+['BshSnowGrain','yade-base',
 		'BssSnowGrain','InteractingBox','InteractingBox2InteractingSphere4SpheresContactGeometry']),
 	
 	env.SharedLibrary('Ef2_BssSnowGrain_BssSnowGrain_makeSpheresContactGeometry',
 	['Engine/Ef2_BssSnowGrain_BssSnowGrain_makeSpheresContactGeometry.cpp'],
-		LIBS=env['LIBS']+['BshSnowGrain','yade-opengl','yade-base',
+		LIBS=env['LIBS']+['BshSnowGrain','yade-base',
 		'BssSnowGrain','InteractingSphere','InteractingSphere2InteractingSphere4SpheresContactGeometry']),
 
 	env.SharedLibrary('Ef2_BssSnowGrain_AABB_makeAABB',['Engine/Ef2_BssSnowGrain_AABB_makeAABB.cpp'],
 		LIBS=env['LIBS']+['BoundingVolumeMetaEngine','InteractingSphere','BssSnowGrain','AABB']),
 	
-	env.SharedLibrary('Ef1_BssSnowGrain_glDraw',['RenderingEngine/Ef1_BssSnowGrain_glDraw.cpp'],
-		LIBS=env['LIBS']+['BshSnowGrain','yade-opengl','yade-base','BssSnowGrain','GLDrawInteractingSphere','$QGLVIEWER_LIB']),
-
-	env.SharedLibrary('Ef1_BshSnowGrain_glDraw',['RenderingEngine/Ef1_BshSnowGrain_glDraw.cpp'],
-		LIBS=env['LIBS']+['BshSnowGrain','yade-opengl','yade-base','$QGLVIEWER_LIB']),
-
 	env.SharedLibrary('BshSnowGrain',['DataClass/BshSnowGrain.cpp'],LIBS=['boost_serialization','yade-base']),
 	env.SharedLibrary('BssSnowGrain',['DataClass/BssSnowGrain.cpp'],LIBS=['boost_serialization','yade-base','BshSnowGrain',
 		'InteractingSphere']),
@@ -62,57 +116,6 @@
 			'Sphere',
 			'RigidBodyParameters']),
 
-	env.SharedLibrary('SnowVoxelsLoader',
-		['PreProcessor/SnowVoxelsLoader.cpp',
-		'PreProcessor/Voxel/DataSurface.cpp',
-		'PreProcessor/Voxel/DataVoxel.cpp',
-		'PreProcessor/Voxel/GrainSurface.cpp',
-		'PreProcessor/Voxel/SafeVectors3.cpp',
-		'PreProcessor/Voxel/VoxelEnvelope.cpp',
-		'PreProcessor/Voxel/Config.cpp'],
-		LIBS=env['LIBS']+['boost_serialization','boost_program_options']+['SDECLinkGeometry',
-			'CohesiveFrictionalContactLaw',
-			'AveragePositionRecorder',
-			'BshSnowGrain',
-			'BssSnowGrain',
-			'VelocityRecorder',
-			'Ef2_InteractingBox_BssSnowGrain_makeIstSnowLayersContact',
-			'Ef2_BssSnowGrain_BssSnowGrain_makeIstSnowLayersContact',
-			'Ef2_InteractingBox_BssSnowGrain_makeSpheresContactGeometry',
-			'Ef2_BssSnowGrain_BssSnowGrain_makeSpheresContactGeometry',
-			'ForceRecorder',
-			'CohesiveFrictionalRelationships',
-			'ElasticCriterionTimeStepper',
-			'InteractingSphere',
-			'InteractingBox',
-			'InteractingSphere2InteractingSphere4SpheresContactGeometry',
-			'InteractingBox2InteractingSphere4SpheresContactGeometry',
-			'ElawSnowLayersDeformation',
-			'CundallNonViscousDamping',
-			'CundallNonViscousDamping',
-			'MetaInteractingGeometry',
-			'GravityEngines',
-			'yade-serialization',
-			'PhysicalActionContainerReseter',
-			'InteractionGeometryMetaEngine',
-			'InteractionPhysicsMetaEngine',
-			'PhysicalActionApplier',
-			'PhysicalParametersMetaEngine',
-			'BoundingVolumeMetaEngine',
-			'yade-multimethods',
-			'Box',
-			'Sphere',
-			'AABB',
-			'DistantPersistentSAPCollider',
-			'MetaInteractingGeometry2AABB',
-			'TriaxialStressController',
-			'TriaxialCompressionEngine',
-			'GlobalStiffnessTimeStepper',
-			'yade-base',
-			'Shop',
-			'TriaxialStateRecorder',
-			'PositionOrientationRecorder',
-			'HydraulicForceEngine']),
 
 	env.SharedLibrary('SnowCreepTest',
 		['PreProcessor/SnowCreepTest.cpp'],