From eb2cab5f2b07288033f3bb32ee2b652171b4852e Mon Sep 17 00:00:00 2001 From: Ray Speth Date: Sun, 12 Feb 2012 02:46:40 +0000 Subject: [PATCH] Updates to SCons scripts to support the new directory structure --- .gitignore | 1 + SConstruct | 38 +++++-------- ext/SConscript | 3 +- interfaces/python/setup.py.in | 3 +- platform/posix/SConscript | 24 +++++++++ .../python => platform/posix}/mixmaster.in | 0 {src => samples}/cxx/SConscript | 0 src/SConscript | 33 ++++++++---- src/apps/SConscript | 53 ++----------------- src/clib/SConscript | 20 ------- src/matlab/SConscript | 13 ++++- {interfaces => src}/python/SConscript | 10 ++-- 12 files changed, 88 insertions(+), 110 deletions(-) create mode 100644 platform/posix/SConscript rename {interfaces/python => platform/posix}/mixmaster.in (100%) rename {src => samples}/cxx/SConscript (100%) delete mode 100644 src/clib/SConscript rename {interfaces => src}/python/SConscript (88%) diff --git a/.gitignore b/.gitignore index d8795fa12..dab15f15a 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ *.obj *.exe.manifest build +src/base/config.h stage .sconsign.dblite .sconf_temp diff --git a/SConstruct b/SConstruct index a7dbea6ee..5b2e2fb28 100644 --- a/SConstruct +++ b/SConstruct @@ -805,10 +805,11 @@ if not env['HAS_MATH_H_ERF']: else: configh['USE_BOOST_MATH'] = None -config_h = env.Command('build/include/cantera/kernel/config.h', - 'Cantera/src/base/config.h.in', +config_h = env.Command('include/cantera/base/config.h', + 'include/cantera/base/config.h.in', ConfigBuilder(configh)) env.AlwaysBuild(config_h) +env['config_h_target'] = config_h # ********************* # *** Build Cantera *** @@ -836,14 +837,6 @@ for header in mglob(env, 'Cantera/cxx/include', 'h'): inst = env.Install('$inst_incdir', header) installTargets.extend(inst) -env['clib_header_targets'] = [] -for header in mglob(env, 'Cantera/clib/src', 'h'): - hcopy = env.Command('build/include/cantera/clib/%s' % header.name, header, - Copy('$TARGET', '$SOURCE')) - buildTargets.append(header) - inst = env.Install(pjoin('$inst_incdir','clib'), header) - installTargets.extend(inst) - env['clib_header_targets'].append(hcopy) inst = env.Install(pjoin('$inst_incdir', 'kernel'), config_h) installTargets.extend(inst) @@ -874,27 +867,24 @@ Export('env', 'buildDir', 'buildTargets', 'installTargets', 'demoTargets') VariantDir('build/ext', 'ext', duplicate=0) SConscript('build/ext/SConscript') -VariantDir('build/kernel', 'Cantera/src', duplicate=0) -SConscript('build/kernel/SConscript') - -VariantDir('build/interfaces/clib', 'Cantera/clib', duplicate=0) -SConscript('build/interfaces/clib/SConscript') - -VariantDir('build/interfaces/cxx', 'Cantera/cxx', duplicate=0) -SConscript('build/interfaces/cxx/SConscript') +VariantDir('build/src', 'src', duplicate=0) +SConscript('build/src/SConscript') if env['f90_interface'] == 'y': - VariantDir('build/interfaces/fortran/', 'Cantera/fortran', duplicate=1) - SConscript('build/interfaces/fortran/SConscript') + VariantDir('build/fortran/', 'src/fortran', duplicate=1) + SConscript('build/src/fortran/SConscript') if env['python_package'] in ('full','minimal'): - SConscript('Cantera/python/SConscript') + SConscript('src/python/SConscript') if env['matlab_toolbox'] == 'y': - SConscript('Cantera/matlab/SConscript') + SConscript('src/matlab/SConscript') -VariantDir('build/tools', 'tools', duplicate=0) -SConscript('build/tools/SConscript') +SConscript('build/src/apps/SConscript') + +if env['OS'] != 'Windows': + VariantDir('build/platform', 'platform/posix', duplicate=0) + SConscript('build/platform/SConscript') # Data files inst = env.Install('$inst_datadir', mglob(env, pjoin('data','inputs'), 'cti', 'xml')) diff --git a/ext/SConscript b/ext/SConscript index 0d83c21f6..afd41ab10 100644 --- a/ext/SConscript +++ b/ext/SConscript @@ -42,8 +42,7 @@ def prep_gtest(env): return localenv # (subdir, library name, (file extensions), prepfunction) -libs = [('tpx','tpx',['cpp'],prep_default), - ('gtest/src','gtest',['^gtest-all.cc'], prep_gtest)] +libs = [('gtest/src','gtest',['^gtest-all.cc'], prep_gtest)] if env['build_with_f2c']: libs.append(('f2c_math', 'ctmath', ['cpp','c'], prep_f2c)) diff --git a/interfaces/python/setup.py.in b/interfaces/python/setup.py.in index bd263908a..02221d626 100644 --- a/interfaces/python/setup.py.in +++ b/interfaces/python/setup.py.in @@ -15,11 +15,10 @@ if '@python_package@' == 'full': author="Prof. D. G. Goodwin, Caltech", author_email="dgoodwin@caltech.edu", url="http://code.google.com/p/cantera", - package_dir = {'MixMaster':'../../apps/MixMaster'}, packages = ["","Cantera","Cantera.OneD", "MixMaster","MixMaster.Units"], package_data = {'Cantera': dataFiles}, - ext_modules=[Extension('_spam', ['src/spam.c'])]) + ext_modules=[Extension('_spam', ['../../src/python/spam.c'])]) elif '@python_package@' == 'minimal': setup(name="Cantera CTI File Processor", diff --git a/platform/posix/SConscript b/platform/posix/SConscript new file mode 100644 index 000000000..61b716890 --- /dev/null +++ b/platform/posix/SConscript @@ -0,0 +1,24 @@ +import sys + +from buildutils import * + +Import('env', 'buildTargets', 'installTargets') +localenv = env.Clone() + +### Generate customized scripts ### + +# 'setup_cantera' +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) + +# '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) diff --git a/interfaces/python/mixmaster.in b/platform/posix/mixmaster.in similarity index 100% rename from interfaces/python/mixmaster.in rename to platform/posix/mixmaster.in diff --git a/src/cxx/SConscript b/samples/cxx/SConscript similarity index 100% rename from src/cxx/SConscript rename to samples/cxx/SConscript diff --git a/src/SConscript b/src/SConscript index 1646b071d..1e24b0ea4 100644 --- a/src/SConscript +++ b/src/SConscript @@ -25,6 +25,7 @@ def numericsSetup(env, subdir, extensions): # (subdir, library name, (file extensions), (extra setup(env))) libs = [('base', 'ctbase', ['cpp'], baseSetup), ('thermo', 'thermo', ['cpp'], defaultSetup), + ('tpx', 'tpx', ['cpp'], defaultSetup), ('equil', 'equil', ['cpp','c'], equilSetup), ('converters', 'converters', ['cpp'], defaultSetup), ('numerics', 'ctnumerics', ['cpp'], numericsSetup), @@ -37,17 +38,31 @@ libs = [('base', 'ctbase', ['cpp'], baseSetup), for subdir, libname, extensions, setup in libs: localenv = env.Clone() - localenv.Append(CPPPATH=Dir('../include/cantera/kernel')) + localenv.Append(CPPPATH=Dir('#include')) + localenv.Append(CPPPATH=Dir('#src')) # todo: remove when not needed source = setup(localenv, subdir, extensions) - for header in mglob(localenv, subdir, 'h'): - h = localenv.Command('../include/cantera/kernel/%s' % header.name, header, - Copy('$TARGET', '$SOURCE')) - buildTargets.extend(h) - inst = localenv.Install(pjoin('$inst_incdir', 'kernel'), h) - installTargets.extend(inst) - lib = localenv.Library(pjoin('../lib', libname), - source=source) + lib = localenv.Library(pjoin('../lib', libname), source=source) + localenv.Depends(lib, localenv['config_h_target']) inst = localenv.Install('$inst_libdir', lib) buildTargets.extend(lib) installTargets.extend(inst) + +# clib is a bit different +localenv = env.Clone() +source = defaultSetup(localenv, 'clib', ['cpp']) +localenv.Append(CPPPATH=[Dir('#include'), Dir('#src')]) + +if env['OS'] == 'Windows': + lib = localenv.SharedLibrary(pjoin('../lib', 'clib'), + source=source, + LIBS=localenv['cantera_libs']) + env['clib_shared'] = lib +else: + lib = localenv.Library(pjoin('../lib', 'clib'), + source=source) + +localenv.Depends(lib, localenv['config_h_target']) +inst = localenv.Install('$inst_libdir', lib) +buildTargets.extend(lib) +installTargets.extend(inst) diff --git a/src/apps/SConscript b/src/apps/SConscript index d656fec62..f2e4373ed 100644 --- a/src/apps/SConscript +++ b/src/apps/SConscript @@ -3,63 +3,20 @@ from buildutils import * Import('env', 'buildTargets', 'installTargets') localenv = env.Clone() -programs = [('cti2ctml', ['src/cti2ctml.cpp'], ['ctbase']), - ('ck2cti', ['src/ck2cti.cpp'], ['converters','ctbase','tpx']), - ('csvdiff', mglob(localenv, 'testtools', 'cpp'), [])] +programs = [('cti2ctml', ['cti2ctml.cpp'], ['ctbase']), + ('ck2cti', ['ck2cti.cpp'], ['converters','ctbase','tpx'])] + +localenv.Append(CPPPATH=['#src', '#include']) for name, src, libs in programs: - prog = localenv.Program(target=pjoin('..', 'bin', name), + prog = localenv.Program(target=pjoin('#build/bin', name), source=src, LIBS=libs) inst = localenv.Install('$inst_bindir', prog) buildTargets.extend(prog) installTargets.extend(inst) -# Copy application templates -installTargets.extend( - localenv.Install(pjoin('$inst_templdir','cxx'), - mglob(localenv, pjoin('templates','cxx'), '*')) + - localenv.Install(pjoin('$inst_templdir','f90'), - mglob(localenv, pjoin('templates','f90'), '*')) + - localenv.Install(pjoin('$inst_templdir','f77'), - mglob(localenv, pjoin('templates','f77'), '*'))) - # Copy man pages if env['INSTALL_MANPAGES']: inst = localenv.Install('$inst_mandir', mglob(localenv, 'man', '*')) installTargets.extend(inst) - -### Generate customized scripts ### - -# 'setup_cantera' -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) - -# '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) - -# 'ctnew' -target = localenv.SubstFile('ctnew', 'ctnew.in') -buildTargets.extend(target) -inst = localenv.Install('$inst_bindir', 'ctnew') -localenv.AddPostAction(inst, Chmod('$TARGET', 0755)) -installTargets.extend(inst) - -# 'ctpath.m', 'cantera_demos.m' -if env['matlab_toolbox'] == 'y': - target = localenv.SubstFile('ctpath.m', 'ctpath.m.in') - buildTargets.extend(target) - inst = localenv.Install('$inst_matlab_dir', target) - installTargets.extend(inst) - - inst = localenv.Install('$inst_matlab_dir', 'cantera_demos.m') - installTargets.extend(inst) diff --git a/src/clib/SConscript b/src/clib/SConscript deleted file mode 100644 index 6e35929a2..000000000 --- a/src/clib/SConscript +++ /dev/null @@ -1,20 +0,0 @@ -from buildutils import * - -Import('env', 'buildTargets', 'installTargets') - -localenv = env.Clone() - -if localenv['OS'] == 'Windows': - lib = localenv.SharedLibrary(pjoin('../../lib', 'clib'), - source=mglob(localenv, 'src', 'cpp'), - LIBS=env['cantera_libs']) - env['clib_shared'] = lib - inst = localenv.Install('$inst_libdir', lib) - buildTargets.extend(lib) - installTargets.extend(inst) -else: - static_lib = localenv.Library(pjoin('../../lib', 'clib'), - source=mglob(localenv, 'src', 'cpp')) - inst_static = localenv.Install('$inst_libdir', static_lib) - buildTargets.extend(static_lib) - installTargets.extend(inst_static) diff --git a/src/matlab/SConscript b/src/matlab/SConscript index 062a3069c..9cb8b3882 100644 --- a/src/matlab/SConscript +++ b/src/matlab/SConscript @@ -60,9 +60,20 @@ target = localenv.Command(mexFile, 'build_cantera.m', build_cmd % localenv) buildTargets.extend(target) -localenv.Depends(target, env['clib_header_targets']) + ### Install the Matlab toolbox ### + +# 'ctpath.m' +target = localenv.SubstFile('ctpath.m', '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', 'cantera_demos.m') +installTargets.extend(inst) + inst = localenv.RecursiveInstall('$inst_matlab_dir', 'cantera') installTargets.extend(inst) diff --git a/interfaces/python/SConscript b/src/python/SConscript similarity index 88% rename from interfaces/python/SConscript rename to src/python/SConscript index 58adc769f..cd9419b7d 100644 --- a/interfaces/python/SConscript +++ b/src/python/SConscript @@ -19,14 +19,16 @@ for var in ('VS80COMNTOOLS', 'VS90COMNTOOLS', 'VS100COMNTOOLS'): if var in os.environ: localenv['ENV'][var] = os.environ[var] -make_setup = localenv.SubstFile('setup.py', 'setup.py.in') +make_setup = localenv.SubstFile('#interfaces/python/setup.py', + '#interfaces/python/setup.py.in') if localenv['python_package'] == 'full': libs = ['clib'] if localenv['OS'] != 'Windows': libs.extend(env['cantera_libs']) + localenv.Append(CPPPATH=['#src', '#include']) - pymodule = localenv.SharedLibrary('Cantera/_cantera', ['src/pycantera.cpp'], + pymodule = localenv.SharedLibrary('Cantera/_cantera', ['pycantera.cpp'], LIBS=libs, SHLIBPREFIX='', SHLIBSUFFIX=gcv('SO')) @@ -34,13 +36,13 @@ if localenv['python_package'] == 'full': localenv.Depends(pymodule, make_setup) if localenv['OS'] == 'Windows': for file in localenv['clib_shared']: - dest = pjoin('Cantera', 'python', 'Cantera', file.name) + dest = pjoin('interfaces', 'python', 'Cantera', file.name) localenv.AddPreAction(pymodule,Copy(dest, file)) elif localenv['python_package'] == 'minimal': pymodule = make_setup -moddir = pjoin('Cantera', 'python') +moddir = pjoin('interfaces', 'python') localenv.AddPostAction(make_setup, 'cd %s && $python_cmd setup.py build' % moddir)