- fixed build issue on Solaris (wrong compilation flags for multi-threading)
- fixed build issue on Linux redhat 3: python does not has tarfile module
diff --git a/SConstruct b/SConstruct
index 8728eff..be142c3 100644
--- a/SConstruct
+++ b/SConstruct
@@ -134,7 +134,7 @@
env.Tool( 'sunc++' )
env.Tool( 'sunlink' )
env.Tool( 'sunar' )
- env.Append( LIBS = ['pthreads'] )
+ env.Append( CCFLAGS = ['-mt'] )
elif platform == 'vacpp':
env.Tool( 'default' )
env.Tool( 'aixcc' )
@@ -198,14 +198,21 @@
env['BUILD_DIR'] = env.Dir(build_dir)
env['ROOTBUILD_DIR'] = env.Dir(rootbuild_dir)
env['DIST_DIR'] = DIST_DIR
-class SrcDistAdder:
- def __init__( self, env ):
- self.env = env
- def __call__( self, *args, **kw ):
- apply( self.env.SrcDist, (self.env['SRCDIST_TARGET'],) + args, kw )
+if 'TarGz' in env['BUILDERS']:
+ class SrcDistAdder:
+ def __init__( self, env ):
+ self.env = env
+ def __call__( self, *args, **kw ):
+ apply( self.env.SrcDist, (self.env['SRCDIST_TARGET'],) + args, kw )
+ env['SRCDIST_BUILDER'] = env.TarGz
+else: # If tarfile module is missing
+ class SrcDistAdder:
+ def __init__( self, env ):
+ pass
+ def __call__( self, *args, **kw ):
+ pass
env['SRCDIST_ADD'] = SrcDistAdder( env )
env['SRCDIST_TARGET'] = os.path.join( DIST_DIR, 'jsoncpp-src-%s.tar.gz' % env['JSONCPP_VERSION'] )
-env['SRCDIST_BUILDER'] = env.TarGz
env_testing = env.Clone( )
env_testing.Append( LIBS = ['json_${LIB_NAME_SUFFIX}'] )
diff --git a/doc/sconscript b/doc/sconscript
index 62b481e..7b78a21 100644
--- a/doc/sconscript
+++ b/doc/sconscript
@@ -31,11 +31,12 @@
target = os.path.join( html_doc_path, 'index.html' ) )
alias_doc_cmd = env.Alias('doc', doc_nodes )
env.Alias('doc', env.Install( html_doc_path, '#README.txt' ) )
- targz_path = os.path.join( env['DIST_DIR'], '%s.tar.gz' % html_dir )
- zip_doc_cmd = env.TarGz( targz_path, [env.Dir(html_doc_path)],
- TARGZ_BASEDIR = env['ROOTBUILD_DIR'] )
- env.Depends( zip_doc_cmd, alias_doc_cmd )
- env.Alias( 'doc-dist', zip_doc_cmd )
+ if 'TarGz' in env['BUILDERS']:
+ targz_path = os.path.join( env['DIST_DIR'], '%s.tar.gz' % html_dir )
+ zip_doc_cmd = env.TarGz( targz_path, [env.Dir(html_doc_path)],
+ TARGZ_BASEDIR = env['ROOTBUILD_DIR'] )
+ env.Depends( zip_doc_cmd, alias_doc_cmd )
+ env.Alias( 'doc-dist', zip_doc_cmd )
##
## doxyfile = env.SubstInFile( '#doc/doxyfile', 'doxyfile.in',
## SUBST_DICT = {
diff --git a/scons-tools/srcdist.py b/scons-tools/srcdist.py
index 3c6a151..864ff40 100644
--- a/scons-tools/srcdist.py
+++ b/scons-tools/srcdist.py
@@ -167,12 +167,13 @@
## scan_check = DoxySourceScanCheck,
## )
- srcdist_builder = targz.makeBuilder( srcDistEmitter )
+ if targz.exists(env):
+ srcdist_builder = targz.makeBuilder( srcDistEmitter )
- env['BUILDERS']['SrcDist'] = srcdist_builder
+ env['BUILDERS']['SrcDist'] = srcdist_builder
def exists(env):
"""
Make sure srcdist exists.
"""
- return True
+ return targz.exists(env)
diff --git a/scons-tools/targz.py b/scons-tools/targz.py
index a655b11..f543200 100644
--- a/scons-tools/targz.py
+++ b/scons-tools/targz.py
@@ -51,28 +51,32 @@
tar.add(source_path, archive_name(source_path) ) # filename, arcname
tar.close()
-targzAction = SCons.Action.Action(targz, varlist=['TARGZ_COMPRESSION_LEVEL','TARGZ_BASEDIR'])
+ targzAction = SCons.Action.Action(targz, varlist=['TARGZ_COMPRESSION_LEVEL','TARGZ_BASEDIR'])
-def makeBuilder( emitter = None ):
- return SCons.Builder.Builder(action = SCons.Action.Action('$TARGZ_COM', '$TARGZ_COMSTR'),
- source_factory = SCons.Node.FS.Entry,
- source_scanner = SCons.Defaults.DirScanner,
- suffix = '$TARGZ_SUFFIX',
- multi = 1)
-TarGzBuilder = makeBuilder()
+ def makeBuilder( emitter = None ):
+ return SCons.Builder.Builder(action = SCons.Action.Action('$TARGZ_COM', '$TARGZ_COMSTR'),
+ source_factory = SCons.Node.FS.Entry,
+ source_scanner = SCons.Defaults.DirScanner,
+ suffix = '$TARGZ_SUFFIX',
+ multi = 1)
+ TarGzBuilder = makeBuilder()
-def generate(env):
- """Add Builders and construction variables for zip to an Environment.
- The following environnement variables may be set:
- TARGZ_COMPRESSION_LEVEL: integer, [0-9]. 0: no compression, 9: best compression (same as gzip compression level).
- TARGZ_BASEDIR: base-directory used to determine archive name (this allow archive name to be relative
- to something other than top-dir).
- """
- env['BUILDERS']['TarGz'] = TarGzBuilder
- env['TARGZ_COM'] = targzAction
- env['TARGZ_COMPRESSION_LEVEL'] = TARGZ_DEFAULT_COMPRESSION_LEVEL # range 0-9
- env['TARGZ_SUFFIX'] = '.tar.gz'
- env['TARGZ_BASEDIR'] = env.Dir('.') # Sources archive name are made relative to that directory.
+ def generate(env):
+ """Add Builders and construction variables for zip to an Environment.
+ The following environnement variables may be set:
+ TARGZ_COMPRESSION_LEVEL: integer, [0-9]. 0: no compression, 9: best compression (same as gzip compression level).
+ TARGZ_BASEDIR: base-directory used to determine archive name (this allow archive name to be relative
+ to something other than top-dir).
+ """
+ env['BUILDERS']['TarGz'] = TarGzBuilder
+ env['TARGZ_COM'] = targzAction
+ env['TARGZ_COMPRESSION_LEVEL'] = TARGZ_DEFAULT_COMPRESSION_LEVEL # range 0-9
+ env['TARGZ_SUFFIX'] = '.tar.gz'
+ env['TARGZ_BASEDIR'] = env.Dir('.') # Sources archive name are made relative to that directory.
+else:
+ def generate(env):
+ pass
+
def exists(env):
return internal_targz