Fixed compilation of the C++ and Fortran sample programs

This commit is contained in:
Ray Speth 2012-02-15 18:06:55 +00:00
parent f65da5d277
commit 4f600c048e
5 changed files with 51 additions and 39 deletions

View file

@ -20,6 +20,8 @@ Basic usage:
'scons test-NAME' - Run the regression test named "FOO". 'scons test-NAME' - Run the regression test named "FOO".
'scons samples' - Compile the C++ and Fortran samples
'scons msi' - Build a Windows installer (.msi) for Cantera. 'scons msi' - Build a Windows installer (.msi) for Cantera.
""" """
@ -845,7 +847,7 @@ buildDir = 'build'
buildTargets = [] buildTargets = []
libraryTargets = [] # objects that go in the Cantera library libraryTargets = [] # objects that go in the Cantera library
installTargets = [] installTargets = []
demoTargets = [] sampleTargets = []
env.SConsignFile() env.SConsignFile()
@ -881,7 +883,7 @@ env['cantera_libs'] = linkLibs
# Add targets from the SConscript files in the various subdirectories # Add targets from the SConscript files in the various subdirectories
Export('env', 'buildDir', 'buildTargets', 'libraryTargets', Export('env', 'buildDir', 'buildTargets', 'libraryTargets',
'installTargets', 'demoTargets') 'installTargets', 'sampleTargets')
# ext needs to come before src so that libraryTargets is fully populated # ext needs to come before src so that libraryTargets is fully populated
VariantDir('build/ext', 'ext', duplicate=0) VariantDir('build/ext', 'ext', duplicate=0)
@ -892,6 +894,12 @@ if env['f90_interface'] == 'y':
VariantDir('build/src/fortran/', 'src/fortran', duplicate=1) VariantDir('build/src/fortran/', 'src/fortran', duplicate=1)
SConscript('build/src/fortran/SConscript') 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)
VariantDir('build/src', 'src', duplicate=0) VariantDir('build/src', 'src', duplicate=0)
SConscript('build/src/SConscript') SConscript('build/src/SConscript')
@ -910,12 +918,17 @@ if env['OS'] != 'Windows':
if env['build_docs']: if env['build_docs']:
SConscript('doc/SConscript') SConscript('doc/SConscript')
if 'samples' in COMMAND_LINE_TARGETS:
SConscript('samples/cxx/SConscript')
if env['f90_interface'] == 'y':
SConscript('samples/f77/SConscript')
# Data files # Data files
inst = env.Install('$inst_datadir', mglob(env, pjoin('data','inputs'), 'cti', 'xml')) inst = env.Install('$inst_datadir', mglob(env, pjoin('data','inputs'), 'cti', 'xml'))
installTargets.extend(inst) installTargets.extend(inst)
### Meta-targets ### ### Meta-targets ###
build_demos = Alias('demos', demoTargets) build_samples = Alias('samples', sampleTargets)
def postBuildMessage(target, source, env): def postBuildMessage(target, source, env):
print "**************************************************************" print "**************************************************************"

View file

@ -1,20 +1,19 @@
from buildutils import * from buildutils import *
Import('env', 'buildTargets', 'installTargets', 'demoTargets') Import('env', 'buildTargets', 'installTargets', 'sampleTargets')
localenv = env.Clone() localenv = env.Clone()
### Demos ###
# (subdir, program name, [source extensions]) # (subdir, program name, [source extensions])
demos = [('combustor', 'combustor', ['cpp']), samples = [('combustor', 'combustor', ['cpp']),
('flamespeed', 'flamespeed', ['cpp']), ('flamespeed', 'flamespeed', ['cpp']),
('kinetics1', 'kinetics1', ['cpp']), ('kinetics1', 'kinetics1', ['cpp']),
('NASA_coeffs', 'NASA_coeffs', ['cpp']), ('NASA_coeffs', 'NASA_coeffs', ['cpp']),
('rankine', 'rankine', ['cpp'])] ('rankine', 'rankine', ['cpp'])]
for subdir, name, extensions in demos: for subdir, name, extensions in samples:
prog = localenv.Program(pjoin('demos',subdir, name), prog = localenv.Program(pjoin(subdir, name),
mglob(localenv, pjoin('demos',subdir), *extensions), mglob(localenv, subdir, *extensions),
CPPPATH=['#include'],
LIBS=env['cantera_libs']) LIBS=env['cantera_libs'])
demoTargets.extend(prog) sampleTargets.extend(prog)

19
samples/f77/SConscript Normal file
View file

@ -0,0 +1,19 @@
from buildutils import *
Import('env', 'installTargets', 'sampleTargets')
localenv = env.Clone()
# (program name, [source files])
samples = [('ctlib', ['ctlib.f']),
('isentropic', ['isentropic.f'])]
ftn_demo = localenv.Object('demo_ftnlib.cpp',
CPPPATH=['#include'])
for program_name, fortran_sources in samples:
prog = localenv.Program(program_name,
fortran_sources + ftn_demo,
CPPPATH=['#build/src/fortran', '#include'],
LIBS=env['cantera_libs']+['cantera_fortran']+['stdc++'],
LIBPATH=['#build/lib'],
LINK='$F77')
sampleTargets.extend(prog)

View file

@ -29,6 +29,7 @@
#include <cantera/IdealGasMix.h> #include <cantera/IdealGasMix.h>
using namespace Cantera; using namespace Cantera;
using std::string;
// store a pointer to an IdealGasMix object // store a pointer to an IdealGasMix object
static IdealGasMix* _gas = 0; static IdealGasMix* _gas = 0;
@ -62,7 +63,7 @@ Transport* _transptr()
// error handler // error handler
void handleError() void handleError()
{ {
showErrors(cout); showErrors(std::cout);
exit(-1); exit(-1);
} }
@ -131,7 +132,7 @@ extern "C" {
void getspeciesname_(integer* k, char* name, ftnlen n) void getspeciesname_(integer* k, char* name, ftnlen n)
{ {
int ik = *k - 1; int ik = *k - 1;
fill(name, name + n, ' '); std::fill(name, name + n, ' ');
string spnm = _gas->speciesName(ik); string spnm = _gas->speciesName(ik);
int ns = spnm.size(); int ns = spnm.size();
unsigned int nmx = (ns > n ? n : ns); unsigned int nmx = (ns > n ? n : ns);
@ -305,7 +306,7 @@ extern "C" {
void getreactioneqn_(integer* i, char* eqn, ftnlen n) void getreactioneqn_(integer* i, char* eqn, ftnlen n)
{ {
int irxn = *i - 1; int irxn = *i - 1;
fill(eqn, eqn + n, ' '); std::fill(eqn, eqn + n, ' ');
string e = _gas->reactionString(irxn); string e = _gas->reactionString(irxn);
int ns = e.size(); int ns = e.size();
unsigned int nmx = (ns > n ? n : ns); unsigned int nmx = (ns > n ? n : ns);

View file

@ -1,6 +1,6 @@
from buildutils import * from buildutils import *
Import('env', 'buildTargets', 'installTargets', 'demoTargets', 'libraryTargets') Import('env', 'buildTargets', 'installTargets', 'libraryTargets')
localenv = env.Clone() localenv = env.Clone()
localenv.Append(CPPPATH=['#include', '#src']) localenv.Append(CPPPATH=['#include', '#src'])
@ -17,23 +17,3 @@ buildTargets.extend(lib)
inst = localenv.Install('$inst_libdir', lib) inst = localenv.Install('$inst_libdir', lib)
installTargets.extend(inst) installTargets.extend(inst)
installTargets.extend(localenv.Install('$inst_incdir', mods)) installTargets.extend(localenv.Install('$inst_incdir', mods))
# (subdir, program name, [source extensions])
demos = [('f77demos', 'ctlib', ['^ctlib.f']),
('f77demos', 'isentropic', ['^isentropic.f'])]
ftn_demo = localenv.Object(pjoin('f77demos','demo_ftnlib.cpp'))
for subdir, name, extensions in demos:
prog = localenv.Program(pjoin(subdir, name),
mglob(localenv, subdir, *extensions) + ftn_demo,
LIBS=env['cantera_libs']+['cantera_fortran']+['stdc++'],
LINK='$F77')
demoTargets.extend(prog)
inst = localenv.RecursiveInstall(pjoin('$inst_sampledir', 'f77'),
'#samples/f77')
installTargets.extend(inst)
inst = localenv.RecursiveInstall(pjoin('$inst_sampledir', 'f77'),
'#samples/f90')
installTargets.extend(inst)