# -*- python -*-
+import glob
+
Import('env')
###########################################################################
res = conf.CheckValgrind() and conf.CheckValgrindWildcards(); \
conf.env.Replace(HAVE_VALGRIND = res)
+###########################################################################
+
+# run configure scripts from external modules
+Export('conf')
+
+sconscripts = sorted(glob.glob("senf/Ext/*/SConfigure"))
+if sconscripts:
+ SConscript(sconscripts)
+
+###########################################################################
+
env = conf.Finish()
+
BoolVariable('sparse_tests', 'Link tests against object files and not the senf lib', False)
)
-if env['PARSEFLAGS']:
- env.MergeFlags(env['PARSEFLAGS'])
-
# Add UNIX env vars matching IMPORT_ENV patterns into the execution environment
senfutil.importProcessEnv(env)
if sconscripts:
SENFSCons.IndexPage(env, 'Mainpage.dox', title="Extensions",
text="""This folder contains additional SENF extensions which are built
- into the senf libarary but are not part of senf proper.""")
+ into the senf library but are not part of senf proper.""")
SConscript(sconscripts)
it's functionality
\li The rest of the socket API is accessible using a classic inheritance hierarchy of \link
protocol_group protocol classes \endlink
- \li There is a family of auxilliary \ref addr_group to supplement the socket library
+ \li There is a family of auxiliary \ref addr_group to supplement the socket library
\section socket_handle Socket Handles
The protocol interface provides further protocol dependent and (possibly) polymorphic access to
- further socket funcitonality. On the other hand, this type of interface is not as flexible,
+ further socket functionality. On the other hand, this type of interface is not as flexible,
generic and fast as the policy interface.
- \section socket_addr Auxilliary Addressing classes
+ \section socket_addr Auxiliary Addressing classes
\seechapter \ref addr_group
To supplement the socket library, there are a multitude of addressing classes. These come in two
of the socket (which generic handles don't). This allows to access to the complete protocol
interface.
- \section over_impl Implementation of the Socket Libarary Structure
+ \section over_impl Implementation of the Socket Library Structure
In the Implementation, the socket policy is identified by an instance of the senf::SocketPolicy
template. The Socket representation is internally represented in a senf::SocketBody which is not
-import os, os.path, site_tools.Yaptu, types, re, fnmatch
+import os, os.path, site_tools.Yaptu, types, re, fnmatch, sys
import SCons.Util
from SCons.Script import *
BoolVariable = BoolOption
###########################################################################
+extdir = os.path.join(senfutildir, '../senf/Ext')
+sys.path.append(extdir)
+
+for ext in os.listdir(extdir):
+ if not os.path.isdir( os.path.join(extdir, ext)): continue
+ if ext.startswith('.'): continue
+ try:
+ setattr( sys.modules[__name__], ext,
+ __import__('%s.site_scons' % ext, fromlist=['senfutil']).senfutil )
+ except ImportError:
+ pass
+
+###########################################################################
def loadTools(env):
global senfutildir
env.Help("""
Any construction environment variable may be set from the scons
command line (see SConstruct file and SCons documentation for a list
-of variables) usin
-g
+of variables) using
VARNAME=value Assign new value
VARNAME+=value Append value at end
for k,v in ARGLIST:
if not unknv.has_key(k) : continue
if k.endswith('+'):
- env.Append(**{k[:-1]: v})
- env.Append(ARGUMENT_VARIABLES = {k[:-1]:v})
+ env.Append(**{k[:-1]: [v]})
+ env.Append(ARGUMENT_VARIABLES = {k[:-1]:[v]})
else:
env.Replace(**{k: v})
env.Append(ARGUMENT_VARIABLES = {k:v})
+ if env['PARSEFLAGS']:
+ env.MergeFlags(env['PARSEFLAGS'])
def importProcessEnv(env):
env.Append( ENV = dict(( (k,v)