Some changes to make SCons faster

This commit is contained in:
Ray Speth 2012-02-23 21:25:20 +00:00
parent b6376f1e00
commit 1ece5bcc3d
7 changed files with 83 additions and 59 deletions

View file

@ -26,7 +26,6 @@ Basic usage:
"""
from buildutils import *
import wxsgen
if not COMMAND_LINE_TARGETS:
# Print usage help
@ -870,6 +869,12 @@ env['config_h_target'] = config_h
# *** Build Cantera ***
# *********************
# Some options to speed up SCons
env.SetOption('max_drift', 2)
env.SetOption('implicit_cache', True)
env['addInstallTargets'] = 'install' in COMMAND_LINE_TARGETS
buildDir = 'build'
buildTargets = []
libraryTargets = [] # objects that go in the Cantera library
@ -881,15 +886,20 @@ env.SConsignFile()
env.Append(CPPPATH=[],
LIBPATH=[Dir('build/lib')])
# Put headers in place
headerBase = 'include/cantera'
inst = env.RecursiveInstall('$inst_incdir', 'include/cantera')
installTargets.extend(inst)
if env['addInstallTargets']:
# Put headers in place
headerBase = 'include/cantera'
inst = env.RecursiveInstall('$inst_incdir', 'include/cantera')
installTargets.extend(inst)
# Install C++ samples
inst = env.RecursiveInstall(pjoin('$inst_sampledir', 'cxx'),
'samples/cxx')
installTargets.extend(inst)
# Install C++ samples
inst = env.RecursiveInstall(pjoin('$inst_sampledir', 'cxx'),
'samples/cxx')
installTargets.extend(inst)
# Data files
inst = env.Install('$inst_datadir', mglob(env, pjoin('data','inputs'), 'cti', 'xml'))
installTargets.extend(inst)
### List of libraries needed to link to Cantera ###
linkLibs = ['cantera']
@ -917,11 +927,12 @@ if env['f90_interface'] == 'y':
VariantDir('build/src/fortran/', 'src/fortran', duplicate=1)
SConscript('build/src/fortran/SConscript')
# install F90 / F77 samples
inst = env.RecursiveInstall(pjoin('$inst_sampledir', 'f77'), 'samples/f77')
installTargets.extend(inst)
inst = env.RecursiveInstall(pjoin('$inst_sampledir', 'f90'), 'samples/f90')
installTargets.extend(inst)
if env['addInstallTargets']:
# install F90 / F77 samples
inst = env.RecursiveInstall(pjoin('$inst_sampledir', 'f77'), 'samples/f77')
installTargets.extend(inst)
inst = env.RecursiveInstall(pjoin('$inst_sampledir', 'f90'), 'samples/f90')
installTargets.extend(inst)
VariantDir('build/src', 'src', duplicate=0)
SConscript('build/src/SConscript')
@ -946,10 +957,6 @@ if 'samples' in COMMAND_LINE_TARGETS:
if env['f90_interface'] == 'y':
SConscript('samples/f77/SConscript')
# Data files
inst = env.Install('$inst_datadir', mglob(env, pjoin('data','inputs'), 'cti', 'xml'))
installTargets.extend(inst)
### Meta-targets ###
build_samples = Alias('samples', sampleTargets)
@ -1013,13 +1020,15 @@ finish_install = env.Command('finish_install', [], postInstallMessage)
env.Depends(finish_install, installTargets)
install_cantera = Alias('install', finish_install)
def build_wxs(target, source, env):
wxs = wxsgen.WxsGenerator(env['stage_dir'],
x64=env['TARGET_ARCH']=='amd64',
includeMatlab=env['matlab_toolbox']=='y')
wxs.make_wxs(str(target[0]))
if 'msi' in COMMAND_LINE_TARGETS:
def build_wxs(target, source, env):
import wxsgen
wxs = wxsgen.WxsGenerator(env['stage_dir'],
x64=env['TARGET_ARCH']=='amd64',
includeMatlab=env['matlab_toolbox']=='y')
wxs.make_wxs(str(target[0]))
wxs_target = env.Command(pjoin('build', 'wix', 'cantera.wxs'),
[], build_wxs)
env.AlwaysBuild(wxs_target)

View file

@ -8,7 +8,8 @@ build = localenv.Command('#build/docs/html/index.html',
'doxygen/Doxyfile', 'doxygen $SOURCE')
buildTargets.extend(build)
inst = localenv.Install(pjoin('$inst_docdir', 'html'),
mglob(localenv, '#/build/docs/html',
'html', 'svg', 'css', 'png'))
installTargets.extend(inst)
if localenv['addInstallTargets']:
inst = localenv.Install(pjoin('$inst_docdir', 'html'),
mglob(localenv, '#/build/docs/html',
'html', 'svg', 'css', 'png'))
installTargets.extend(inst)

View file

@ -12,13 +12,17 @@ v = sys.version_info
localenv['python_module_loc'] = pjoin(localenv['prefix'], 'lib', 'python%i.%i' % v[:2], 'site-packages')
target = localenv.SubstFile('setup_cantera', 'setup_cantera.in')
buildTargets.extend(target)
inst = localenv.Install('$inst_bindir','setup_cantera')
installTargets.append(inst)
if localenv['addInstallTargets']:
inst = localenv.Install('$inst_bindir','setup_cantera')
installTargets.append(inst)
# 'mixmaster'
if env['python_package'] == 'full':
target = localenv.SubstFile('mixmaster', 'mixmaster.in')
buildTargets.extend(target)
inst = localenv.Install('$inst_bindir', 'mixmaster')
localenv.AddPostAction(inst, Chmod('$TARGET', 0755))
installTargets.extend(inst)
if localenv['addInstallTargets']:
inst = localenv.Install('$inst_bindir', 'mixmaster')
localenv.AddPostAction(inst, Chmod('$TARGET', 0755))
installTargets.extend(inst)

View file

@ -52,9 +52,11 @@ localenv = env.Clone()
lib = localenv.StaticLibrary('../lib/cantera', libraryTargets,
SPAWN=getSpawn(localenv))
localenv.Depends(lib, localenv['config_h_target'])
inst = localenv.Install('$inst_libdir', lib)
buildTargets.extend(lib)
installTargets.extend(inst)
if localenv['addInstallTargets']:
inst = localenv.Install('$inst_libdir', lib)
buildTargets.extend(lib)
installTargets.extend(inst)
# OS X requires the shared libraries at link time
if localenv['OS'] == 'Darwin' and localenv['use_sundials'] == 'y':
@ -66,6 +68,8 @@ lib = localenv.SharedLibrary('../lib/cantera_shared', libraryTargets,
SPAWN=getSpawn(localenv))
env['cantera_shlib'] = lib
localenv.Depends(lib, localenv['config_h_target'])
inst = localenv.Install('$inst_libdir', lib)
buildTargets.extend(lib)
installTargets.extend(inst)
if localenv['addInstallTargets']:
inst = localenv.Install('$inst_libdir', lib)
buildTargets.extend(lib)
installTargets.extend(inst)

View file

@ -12,11 +12,13 @@ for name, src in programs:
prog = localenv.Program(target=pjoin('#build/bin', name),
source=src,
LIBS=['cantera'])
inst = localenv.Install('$inst_bindir', prog)
buildTargets.extend(prog)
installTargets.extend(inst)
if localenv['addInstallTargets']:
inst = localenv.Install('$inst_bindir', prog)
buildTargets.extend(prog)
installTargets.extend(inst)
# Copy man pages
if env['INSTALL_MANPAGES']:
if localenv['addInstallTargets'] and env['INSTALL_MANPAGES']:
inst = localenv.Install('$inst_mandir', mglob(localenv, 'man', '*'))
installTargets.extend(inst)

View file

@ -15,6 +15,8 @@ objects = [o for o in artifacts if not o.path.endswith('.mod')]
lib = localenv.Library(target=pjoin('..','..','lib','cantera_fortran'),
source=objects)
buildTargets.extend(lib)
inst = localenv.Install('$inst_libdir', lib)
installTargets.extend(inst)
installTargets.extend(localenv.Install('$inst_incdir', mods))
if localenv['addInstallTargets']:
inst = localenv.Install('$inst_libdir', lib)
installTargets.extend(inst)
installTargets.extend(localenv.Install('$inst_incdir', mods))

View file

@ -66,19 +66,21 @@ buildTargets.extend(target)
# 'ctpath.m'
target = localenv.SubstFile('ctpath.m', '#interfaces/matlab/ctpath.m.in')
buildTargets.extend(target)
inst = localenv.Install('$inst_matlab_dir', target)
installTargets.extend(inst)
# 'cantera_demos.m'
inst = localenv.Install('$inst_matlab_dir', '#samples/matlab/cantera_demos.m')
installTargets.extend(inst)
inst = localenv.RecursiveInstall('$inst_matlab_dir', '#interfaces/matlab/toolbox')
installTargets.extend(inst)
inst = localenv.RecursiveInstall(pjoin('$inst_sampledir', 'matlab'), '#samples/matlab')
installTargets.extend(inst)
if os.name == 'nt':
inst = localenv.Install('$inst_matlab_dir', localenv['cantera_shlib'])
if localenv['addInstallTargets']:
inst = localenv.Install('$inst_matlab_dir', target)
installTargets.extend(inst)
# 'cantera_demos.m'
inst = localenv.Install('$inst_matlab_dir', '#samples/matlab/cantera_demos.m')
installTargets.extend(inst)
inst = localenv.RecursiveInstall('$inst_matlab_dir', '#interfaces/matlab/toolbox')
installTargets.extend(inst)
inst = localenv.RecursiveInstall(pjoin('$inst_sampledir', 'matlab'), '#samples/matlab')
installTargets.extend(inst)
if os.name == 'nt':
inst = localenv.Install('$inst_matlab_dir', localenv['cantera_shlib'])
installTargets.extend(inst)