[cig-commits] commit: Updating SConstruct to operate like stgUnderworldE.
Mercurial
hg at geodynamics.org
Mon Nov 24 11:23:05 PST 2008
changeset: 82:64d894c49f62
user: Luke Hodkinson <luke at vpac.org>
date: Wed Oct 01 11:40:32 2008 +0200
files: SConstruct
description:
Updating SConstruct to operate like stgUnderworldE.
diff -r 2ad7aaba2fd3 -r 64d894c49f62 SConstruct
--- a/SConstruct Thu Sep 11 17:13:28 2008 +1000
+++ b/SConstruct Wed Oct 01 11:40:32 2008 +0200
@@ -26,14 +26,23 @@ if 'config' in COMMAND_LINE_TARGETS or '
proj = env.Package(SConfig.Project)
proj.opts.AddOptions(
- BoolOption('with_glucifer', 'Use gLucifer visualisation', 1)
+ BoolOption('with_glucifer', 'Use gLucifer visualisation', 1),
+ BoolOption('read_hdf5', 'Read from HDF5 files when restarting from checkpoint', 1),
+ BoolOption('write_hdf5', 'Write checkpoint files as HDF5', 1)
)
proj.dependency(SConfig.packages.cmath)
proj.dependency(SConfig.packages.libXML2)
proj.dependency(SConfig.packages.MPI)
- proj.dependency(SConfig.packages.SVNRevision)
+ proj.dependency(SConfig.packages.HGRevision)
proj.dependency(SConfig.packages.BlasLapack)
- proj.dependency(SConfig.packages.HDF5, False, have_define='HAVE_HDF5')
+
+ if env['read_hdf5'] and env['write_hdf5']:
+ proj.dependency(SConfig.packages.HDF5, False, have_define=['READ_HDF5','WRITE_HDF5'])
+ elif env['write_hdf5']:
+ proj.dependency(SConfig.packages.HDF5, False, have_define='WRITE_HDF5')
+ elif env['read_hdf5']:
+ proj.dependency(SConfig.packages.HDF5, False, have_define='READ_HDF5')
+
proj.dependency(SConfig.packages.PETSc, have_define='HAVE_PETSC')
proj.dependency(SConfig.packages.PETScExt)
if env['with_glucifer']:
@@ -46,6 +55,8 @@ if 'config' in COMMAND_LINE_TARGETS or '
proj.dependency(SConfig.packages.libPNG, False, have_define='HAVE_PNG')
proj.dependency(SConfig.packages.libJPEG, False, have_define='HAVE_JPEG')
proj.dependency(SConfig.packages.libTIFF, False, have_define='HAVE_TIFF')
+ if platform.system() == 'Darwin':
+ proj.dependency(SConfig.packages.CoreServices)
env.configure_packages()
# Need to define the extension for shared libraries as well
@@ -53,6 +64,11 @@ if 'config' in COMMAND_LINE_TARGETS or '
ext = env['ESCAPE']('"' + env['SHLIBSUFFIX'][1:] + '"')
lib_dir = env['ESCAPE']('"' + os.path.abspath(env['build_dir']) + '/lib' + '"')
env.AppendUnique(CPPDEFINES=[('MODULE_EXT', ext), ('LIB_DIR', lib_dir)])
+
+ # If we have no shared libraries, include a pre-processor definition to
+ # prevent modules from trying to load dynamically.
+ if not env['shared_libraries']:
+ env.AppendUnique(CPPDEFINES=['NOSHARED', 'SINGLE_EXE'])
# Save results.
env.save_config()
@@ -68,19 +84,58 @@ else:
# INSERT TARGETS HERE.
#
- SConscript('StGermain/SConscript', exports='env')
+ module = SConscript('StGermain/SConscript', exports='env')
+ module_proto = module[0]
+ module_code = module[1]
env.Prepend(LIBS='StGermain')
- SConscript('StgDomain/SConscript', exports='env')
+ module = SConscript('StgDomain/SConscript', exports='env')
+ module_proto += module[0]
+ module_code += module[1]
env.Prepend(LIBS='StgDomain')
- SConscript('StgFEM/SConscript', exports='env')
+ module = SConscript('StgFEM/SConscript', exports='env')
+ module_proto += module[0]
+ module_code += module[1]
env.Prepend(LIBS='StgFEM')
- SConscript('PICellerator/SConscript', exports='env')
+ module = SConscript('PICellerator/SConscript', exports='env')
+ module_proto += module[0]
+ module_code += module[1]
env.Prepend(LIBS='PICellerator')
- SConscript('Underworld/SConscript', exports='env')
+ module = SConscript('Underworld/SConscript', exports='env')
+ module_proto += module[0]
+ module_code += module[1]
env.Prepend(LIBS='Underworld')
- SConscript('Magma/SConscript', exports='env')
+ module = SConscript('Magma/SConscript', exports='env')
+ module_proto += module[0]
+ module_code += module[1]
+ env.Prepend(LIBS='Magma')
if env['with_glucifer']:
- SConscript('gLucifer/SConscript', exports='env')
+ module += SConscript('gLucifer/SConscript', exports='env')
+ env.Prepend(LIBS='glucifer')
+ module_proto += module[0]
+ module_code += module[1]
+
+ # If we're building only with static libraries, we need to build the
+ # StGermain executable here, after we've finished building all the
+ # other static libraries.
+ if not env['shared_libraries'] and env['static_libraries']:
+ module_src = env.build_module_register(env.get_build_path('StGermain/ModuleRegister.c'), module_proto, module_code)
+ module_obj = env.SharedObject(module_src)
+ module_lib = env.Library(env.get_build_path('lib/ModuleRegister'), module_obj)
+ libs = env.get('LIBS', [])
+ ind = libs.index('StGermain')
+ libs.insert(ind + 1, module_lib)
+
+ src = 'StGermain/src/main.c'
+ obj_dst = env.get_build_path('StGermain/' + src[:-2])
+ obj = env.SharedObject(obj_dst, src)
+ prog_dst = env.get_build_path('bin/StGermain')
+ env.Program(prog_dst, obj, LIBS=libs)
+
+ src = 'StGermain/Base/FlattenXML/src/main.c'
+ obj_dst = env.get_build_path('StGermain/' + src[:-2])
+ obj = env.SharedObject(obj_dst, src)
+ prog_dst = env.get_build_path('bin/FlattenXML')
+ env.Program(prog_dst, obj, LIBS=libs)
# Dump package config.
filename = env.get_build_path('lib/pkgconfig/stgermain.pc')
More information about the CIG-COMMITS
mailing list