Fixed compilation of the C++ and Fortran sample programs
This commit is contained in:
parent
f65da5d277
commit
4f600c048e
5 changed files with 51 additions and 39 deletions
19
SConstruct
19
SConstruct
|
|
@ -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 "**************************************************************"
|
||||||
|
|
|
||||||
|
|
@ -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
19
samples/f77/SConscript
Normal 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)
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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)
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue