Files
cantera/src/SConscript

93 lines
3.5 KiB
Python
Raw Normal View History

2011-12-14 03:03:57 +00:00
from buildutils import *
Import('env', 'build', 'install', 'libraryTargets')
2011-12-14 03:03:57 +00:00
def defaultSetup(env, subdir, extensions):
env.Append(CCFLAGS=env['pch_flags'])
return mglob(env, subdir, *extensions)
def baseSetup(env, subdir, extensions):
escaped_datadir = '\\"' + env['ct_datadir'].replace('\\', '\\\\') + '\\"'
env.Append(CPPDEFINES={'CANTERA_DATA': escaped_datadir})
return defaultSetup(env, subdir, extensions)
# (subdir, (file extensions), (extra setup(env)))
libs = [('base', ['cpp'], baseSetup),
('thermo', ['cpp'], defaultSetup),
('tpx', ['cpp'], defaultSetup),
('equil', ['cpp','c'], defaultSetup),
('numerics', ['cpp'], defaultSetup),
('kinetics', ['cpp'], defaultSetup),
('transport', ['cpp'], defaultSetup),
('oneD', ['cpp'], defaultSetup),
('zeroD', ['cpp'], defaultSetup),
('clib', ['cpp'], defaultSetup),
2011-12-14 03:03:57 +00:00
]
localenv = env.Clone()
localenv.Prepend(CPPPATH=[Dir('#include'), Dir('#include/cantera/ext'), Dir('.')])
localenv.Append(CCFLAGS=env['warning_flags'])
if env['CC'] == 'cl' and env['debug']:
env['use_pch'] = False # PCH doesn't work with per-file PDB
if env['use_pch']:
if env['CC'] == 'cl':
localenv['PCH'], pchobj = localenv.PCH('#include/cantera/base/system.cpp')
libraryTargets.append(pchobj)
localenv['PCHSTOP'] = 'cantera/base/system.h'
else:
localenv['precompiled_header'] = File('#include/cantera/base/system.h')
pch = build(localenv.GchSh('#include/cantera/base/system.h.gch',
localenv['precompiled_header']))
# To force early compilaton of the precompiled header
localenv.Depends(env['config_h_target'], pch)
else:
removeFile('include/cantera/base/system.h.gch')
env['pch_flags'] = []
for subdir, extensions, setup in libs:
env2 = localenv.Clone()
source = setup(env2, subdir, extensions)
objects = env2.SharedObject(source)
env2.Depends(objects, env2['config_h_target'])
libraryTargets.extend(objects)
# build the Cantera static library
lib = build(localenv.StaticLibrary('../lib/cantera', libraryTargets,
SPAWN=getSpawn(localenv)))
localenv.Depends(lib, localenv['config_h_target'])
install('$inst_libdir', lib)
env['cantera_staticlib'] = lib
if (localenv['system_sundials'] == 'y'):
localenv.Append(LIBS=localenv['sundials_libs'],
LIBPATH=localenv['sundials_libdir'])
if localenv['blas_lapack_libs']:
localenv.Append(LIBS=localenv['blas_lapack_libs'],
LIBPATH=localenv['blas_lapack_dir'])
if localenv['system_fmt']:
localenv.Append(LIBS='fmt')
# Build the Cantera shared library
if localenv['layout'] != 'debian':
if localenv['renamed_shared_libraries']:
sharedName = '../lib/cantera_shared'
else:
sharedName = '../lib/cantera'
if StrictVersion(SCons.__version__) >= StrictVersion('2.4.0'):
# InstallVersionedLib only fully functional in SCons >= 2.4.0
lib = build(localenv.SharedLibrary(sharedName, libraryTargets,
SPAWN=getSpawn(localenv),
SHLIBVERSION=localenv['cantera_pure_version']))
install(localenv.InstallVersionedLib, '$inst_libdir', lib)
else:
lib = build(localenv.SharedLibrary(sharedName, libraryTargets,
SPAWN=getSpawn(localenv)))
install('$inst_libdir', lib)
env['cantera_shlib'] = lib
localenv.Depends(lib, localenv['config_h_target'])