from buildutils import *

Import('env', 'buildTargets', 'installTargets', 'demoTargets')

localenv = env.Clone()

f90_src = mglob(localenv, 'src', 'f90', 'cpp')

artifacts = localenv.Object(f90_src)
mods = [o for o in artifacts if o.path.endswith('.mod')]
objs = [o for o in artifacts if not o.path.endswith('.mod')]

lib = localenv.Library(target=pjoin('..','..','lib','fct'),
                       source=objs)
buildTargets.extend(lib)
inst = localenv.Install('$inst_libdir', lib)
installTargets.extend(inst)

installTargets.extend(localenv.Install('$inst_incdir', mods))

# Copy the mod files to the include directory
for mod in mods:
    copy = localenv.Command(target=pjoin('..','..','include','cantera', mod.name),
                            source=mod,
                            action=Copy('$TARGET', '$SOURCE'))
    localenv.AddPostAction(lib, copy)
    buildTargets.extend(copy)

# (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']+['fct']+['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)
