[cig-commits] commit: Adding the ability to build sub-directories

Mercurial hg at geodynamics.org
Mon Nov 24 11:31:04 PST 2008


changeset:   105:88639d0dce7e
user:        LukeHodkinson
date:        Mon Aug 11 10:38:06 2008 +0000
files:       SConscript
description:
Adding the ability to build sub-directories
individually. Libraries will be updated with
any changes made after any individual path
is built. Use it like this:

  scons target=<path to build>

For example:

  scons target=StGermain/Base

Will build everything under StGermain/Base.


diff -r 428cd5f49cb5 -r 88639d0dce7e SConscript
--- a/SConscript	Thu Aug 07 02:36:17 2008 +0000
+++ b/SConscript	Mon Aug 11 10:38:06 2008 +0000
@@ -32,15 +32,7 @@ if env['shared_libraries']:
 
 #
 # Build toolbox.
-objs = env.build_sources(env.glob('libPICellerator/Toolbox/*.c'), 'PICellerator/libPICellerator/Toolbox')
-objs += env.build_metas(env.glob('libPICellerator/Toolbox/*.meta'), 'PICellerator/libPICellerator/Toolbox')
-if env['shared_libraries']:
-    env.SharedLibrary(env.get_target_name('lib/PICellerator_Toolboxmodule'), objs,
-                      SHLIBPREFIX='',
-                      LIBPREFIXES=env.make_list(env['LIBPREFIXES']) + [''],
-                      LIBS=['PICellerator'] + env.get('LIBS', []))
-if env['static_libraries']:
-    env.src_objs += objs
+env.build_toolbox('libPICellerator/Toolbox')
 
 #
 # Build plugins. Note that this must happen after the shared library
@@ -53,25 +45,34 @@ if env['static_libraries']:
 if env['static_libraries']:
     env.Library(env.get_build_path('lib/PICellerator'), env.src_objs)
 
+#
 # Build unit test runner.
-env['PCURUNNERINIT'] = ''
-env['PCURUNNERSETUP'] = """StGermain_Init( &argc, &argv );
+if not env.get('dir_target', ''):
+    env['PCURUNNERINIT'] = ''
+    env['PCURUNNERSETUP'] = """StGermain_Init( &argc, &argv );
    StgDomain_Init( &argc, &argv );
    StgFEM_Init( &argc, &argv );
    PICellerator_Init( &argc, &argv );"""
-env['PCURUNNERTEARDOWN'] = """PICellerator_Finalise();
+    env['PCURUNNERTEARDOWN'] = """PICellerator_Finalise();
    StgFEM_Finalise();
    StgDomain_Finalise();
    StGermain_Finalise();"""
-runner_src = env.PCUSuiteRunner(env.get_build_path('PICellerator/testPICellerator.c'), env.suite_hdrs)
-runner_obj = env.SharedObject(runner_src)
-env.Program(env.get_build_path('bin/testPICellerator'),
+    runner_src = env.PCUSuiteRunner(env.get_build_path('PICellerator/testPICellerator.c'), env.suite_hdrs)
+    runner_obj = env.SharedObject(runner_src)
+    env.Program(env.get_build_path('bin/testPICellerator'),
             runner_obj + env.suite_objs,
             LIBS=['PICellerator', 'pcu'] + env.get('LIBS', []))
 
+#
 # Copy over XML files.
 xml_bases = ['']
 for base in xml_bases:
     dst = env.get_build_path('lib/StGermain/PICellerator/' + base)
     for file in env.glob('Apps/src/' + base + '/*.xml'):
-        env.Install(dst, file)
+        if env.check_dir_target(file):
+            env.Install(dst, file)
+
+#
+# Return any module code we need to build into a static binary.
+module = (env.get('STGMODULEPROTO', ''), env.get('STGMODULECODE', ''))
+Return('module')



More information about the CIG-COMMITS mailing list