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 samples' - Compile the C++ and Fortran samples
'scons msi' - Build a Windows installer (.msi) for Cantera.
"""
@ -845,7 +847,7 @@ buildDir = 'build'
buildTargets = []
libraryTargets = [] # objects that go in the Cantera library
installTargets = []
demoTargets = []
sampleTargets = []
env.SConsignFile()
@ -881,7 +883,7 @@ env['cantera_libs'] = linkLibs
# Add targets from the SConscript files in the various subdirectories
Export('env', 'buildDir', 'buildTargets', 'libraryTargets',
'installTargets', 'demoTargets')
'installTargets', 'sampleTargets')
# ext needs to come before src so that libraryTargets is fully populated
VariantDir('build/ext', 'ext', duplicate=0)
@ -892,6 +894,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)
VariantDir('build/src', 'src', duplicate=0)
SConscript('build/src/SConscript')
@ -910,12 +918,17 @@ if env['OS'] != 'Windows':
if env['build_docs']:
SConscript('doc/SConscript')
if 'samples' in COMMAND_LINE_TARGETS:
SConscript('samples/cxx/SConscript')
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_demos = Alias('demos', demoTargets)
build_samples = Alias('samples', sampleTargets)
def postBuildMessage(target, source, env):
print "**************************************************************"

View file

@ -1,20 +1,19 @@
from buildutils import *
Import('env', 'buildTargets', 'installTargets', 'demoTargets')
Import('env', 'buildTargets', 'installTargets', 'sampleTargets')
localenv = env.Clone()
### Demos ###
# (subdir, program name, [source extensions])
demos = [('combustor', 'combustor', ['cpp']),
('flamespeed', 'flamespeed', ['cpp']),
('kinetics1', 'kinetics1', ['cpp']),
('NASA_coeffs', 'NASA_coeffs', ['cpp']),
('rankine', 'rankine', ['cpp'])]
samples = [('combustor', 'combustor', ['cpp']),
('flamespeed', 'flamespeed', ['cpp']),
('kinetics1', 'kinetics1', ['cpp']),
('NASA_coeffs', 'NASA_coeffs', ['cpp']),
('rankine', 'rankine', ['cpp'])]
for subdir, name, extensions in demos:
prog = localenv.Program(pjoin('demos',subdir, name),
mglob(localenv, pjoin('demos',subdir), *extensions),
for subdir, name, extensions in samples:
prog = localenv.Program(pjoin(subdir, name),
mglob(localenv, subdir, *extensions),
CPPPATH=['#include'],
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>
using namespace Cantera;
using std::string;
// store a pointer to an IdealGasMix object
static IdealGasMix* _gas = 0;
@ -62,7 +63,7 @@ Transport* _transptr()
// error handler
void handleError()
{
showErrors(cout);
showErrors(std::cout);
exit(-1);
}
@ -131,7 +132,7 @@ extern "C" {
void getspeciesname_(integer* k, char* name, ftnlen n)
{
int ik = *k - 1;
fill(name, name + n, ' ');
std::fill(name, name + n, ' ');
string spnm = _gas->speciesName(ik);
int ns = spnm.size();
unsigned int nmx = (ns > n ? n : ns);
@ -305,7 +306,7 @@ extern "C" {
void getreactioneqn_(integer* i, char* eqn, ftnlen n)
{
int irxn = *i - 1;
fill(eqn, eqn + n, ' ');
std::fill(eqn, eqn + n, ' ');
string e = _gas->reactionString(irxn);
int ns = e.size();
unsigned int nmx = (ns > n ? n : ns);

View file

@ -1,6 +1,6 @@
from buildutils import *
Import('env', 'buildTargets', 'installTargets', 'demoTargets', 'libraryTargets')
Import('env', 'buildTargets', 'installTargets', 'libraryTargets')
localenv = env.Clone()
localenv.Append(CPPPATH=['#include', '#src'])
@ -17,23 +17,3 @@ buildTargets.extend(lib)
inst = localenv.Install('$inst_libdir', lib)
installTargets.extend(inst)
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)