[cig-commits] commit:

Mercurial hg at geodynamics.org
Mon Nov 24 11:58:25 PST 2008


changeset:   39:f76b33690068
user:        LukeHodkinson
date:        Mon Mar 03 05:07:17 2008 +0000
files:       SConscript SConstruct
description:
Updating the SCons build scripts to use
a better configuration method.


diff -r 13fb0b09d094 -r f76b33690068 SConscript
--- a/SConscript	Mon Mar 03 04:52:59 2008 +0000
+++ b/SConscript	Mon Mar 03 05:07:17 2008 +0000
@@ -1,15 +1,8 @@ Import('env')
 Import('env')
 
-# Need to copy the environment for use here.
 env = env.Copy()
-
-# Add some extra stuff.
-env.proj = 'StgDomain'
-env.Append(CPPPATH=['#build/include/' + env.proj])
-
-#
-# Target specification section.
-#
+env.project_name = 'StgDomain' # Need a project name.
+env.clear_all() # ... so that our structures are ready.
 
 env.build_directory('Geometry')
 env.build_directory('Shape')
diff -r 13fb0b09d094 -r f76b33690068 SConstruct
--- a/SConstruct	Mon Mar 03 04:52:59 2008 +0000
+++ b/SConstruct	Mon Mar 03 05:07:17 2008 +0000
@@ -1,87 +1,35 @@ import os, glob
-import os, glob
+import os, sys
 
-# Check versions of some things.
-EnsurePythonVersion(2, 5)
-EnsureSConsVersion(0, 97)
+# Source the configuration scripts.
+sys.path.insert(0, os.path.abspath(os.path.join(os.getcwd(), 'config')))
+SConscript('config/SConfig/SConscript')
 
-#
-# Setup our option database.
-#
+# Create our base construction environment.
+env = Environment()
 
-opts = Options('config.cache')
-opts.AddOptions(
-    BoolOption('debug', 'Enable debugging version', 1),
-    BoolOption('useMpiRecord', 'Don''t know what this does...', 0),
-    PathOption('prefix', 'Installation path',
-               '/usr/local', PathOption.PathIsDirCreate),
-    PathOption('mpichDir', 'MPI installation path',
-               None, PathOption.PathIsDir),
-    PathOption('mpichIncDir', 'MPICH header installation path',
-               None, PathOption.PathIsDir),
-    PathOption('mpichLibDir', 'MPICH library installation path',
-               None, PathOption.PathIsDir),
-    PathOption('petscDir', 'PETSc installation path',
-               None, PathOption.PathIsDir),
-    PathOption('libxml2Dir', 'libXML2 installation path',
-               None, PathOption.PathIsDir),
-    PathOption('libxml2IncDir', 'libXML2 header installation path',
-               None, PathOption.PathIsDir),
-    PackageOption('csoap', 'Enable use of the package CSoap', 'no'))
+# Configuring or building? Or helping?
+if 'config' in COMMAND_LINE_TARGETS or 'help' in COMMAND_LINE_TARGETS:
+    import packages
+    opts = Options('config.cache') # Create our options database.
 
-#
-# Create our substitution environment.
-#
+    # Setup all the packages we want configured.
+    env.Package(packages.StgDomain, opts)
+    env.setup_packages(opts)
 
-env = Environment(CC='cc', ENV=os.environ, options=opts)
-env['CPPPATH'] = env['CPPPATH'] if 'CPPPATH' in env._dict else []
-env['LIBPATH'] = env['LIBPATH'] if 'LIBPATH' in env._dict else []
-env['CPPDEFINES'] = env['CPPDEFINES'] if 'CPPDEFINES' in env._dict else []
-env['LIBS'] = env['LIBS'] if 'LIBS' in env._dict else []
-env['RPATH'] = env['RPATH'] if 'RPATH' in env._dict else []
+    if 'help' in COMMAND_LINE_TARGETS:
+        env.Alias('help', '.')
+        print opts.GenerateHelpText(env)
 
-# Add any variables that get used throughout the whole build.
-env.proj = 'StgDomain'
-if env['debug']:
-    env.Append(CCFLAGS='-g')
-env.Append(CPPPATH=['#build/include'])
-env.Append(CPPPATH=['#build/include/' + env.proj])
-env.Append(LIBPATH=['#build/lib'])
+    else:
+        env.configure_packages(opts)
 
-# Add any helper functions we may need.
-SConscript('StgSCons', exports='env')
+else:
+    # Prepare our construction environment.
+    env.load_config('config.cfg') # Load configuration.
+    SConscript('StgSCons', exports='env') # Setup our StG specific utils.
+    if env['staticLibraries']: # Static libs or shared?
+        env.library_builder = env.StaticLibrary
+    else:
+        env.library_builder = env.SharedLibrary
 
-# Setup any additional builds.
-env.Alias('install', env['prefix'])
-
-#
-# Configuration section.
-#
-
-SConscript('SConfigure', exports='env opts')
-
-#
-# Target specification section.
-#
-
-env.BuildDir('build', '.', duplicate=0)
-
-env.build_directory('Geometry')
-env.build_directory('Shape')
-env.build_directory('Mesh')
-env.build_directory('Utils')
-env.build_directory('Swarm')
-
-env.build_headers(glob.glob('libStgDomain/src/*.h'), 'StgDomain')
-env.build_objects(glob.glob('libStgDomain/src/*.c'), 'libStgDomain')
-env.build_objects(glob.glob('libStgDomain/Toolbox/*.c'), 'Toolbox')
-env.build_metadata(glob.glob('libStgDomain/src/*.meta'), 'libStgDomain')
-env.build_metadata(glob.glob('libStgDomain/Toolbox/*.meta'), 'Toolbox')
-
-env.build_library(env.obj_nodes['.'], 'StgDomain')
-
-env.build_library(env.obj_nodes['Toolbox']['.'],
-                  'StgDomain_Toolboxmodule',
-                  True)
-
-env.build_tests(glob.glob('libStgDomain/tests/test*.c'),
-                'StgDomain', libs='StgDomain')
+    SConscript('SConscript', exports='env')



More information about the CIG-COMMITS mailing list