Update SConstruct
This commit is contained in:
parent
fbe1b6917b
commit
61202f7a1f
|
@ -1,8 +1,44 @@
|
||||||
from sysconfig import get_config_var
|
from sysconfig import get_config_var
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
SetOption('silent', True)
|
||||||
|
# Define the command line options
|
||||||
|
AddOption('--dbg',
|
||||||
|
dest='dbg',
|
||||||
|
action='store_true',
|
||||||
|
help='add debugging symbols')
|
||||||
|
|
||||||
|
AddOption('--verbose',
|
||||||
|
dest='verbose',
|
||||||
|
action='store_true',
|
||||||
|
help='add debugging symbols')
|
||||||
|
|
||||||
|
|
||||||
|
# define environments
|
||||||
COMP_OPTS = ['-O2', '-ffast-math', '-fno-automatic']
|
COMP_OPTS = ['-O2', '-ffast-math', '-fno-automatic']
|
||||||
env = Environment(tools=['default', 'gfortran'], FORTRAN='gfortran', FORTRANFLAGS=" ".join(['-fPIC'] + COMP_OPTS))
|
#std = Environment(tools=['default', 'gfortran'], FORTRAN='gfortran',
|
||||||
|
std = Environment(FORTRAN='gfortran',
|
||||||
|
FORTRANFLAGS=['-fPIC', '-O2', '-ffast-math', '-fno-automatic'],
|
||||||
|
F2PY_OPTS=[],
|
||||||
|
FORTRANCOMSTR = "building $TARGET ...")
|
||||||
|
|
||||||
|
dbg = std.Clone()
|
||||||
|
dbg.Append(FORTRANFLAGS = ['-g', '-Wall', '-Wextra', '-Warray-temporaries', '-Wconversion', '-fbacktrace',
|
||||||
|
'-ffree-line-length-0', '-fcheck=all', '-ffpe-trap=zero,overflow,underflow',
|
||||||
|
'-finit-real=nan'])
|
||||||
|
dbg.Append(F2PY_OPTS = ['--debug-capi', '--debug'])
|
||||||
|
|
||||||
|
env = std
|
||||||
|
if GetOption('dbg'):
|
||||||
|
env = dbg
|
||||||
|
|
||||||
|
if GetOption('verbose'):
|
||||||
|
SetOption('silent', False)
|
||||||
|
#env.Replace(FORTRANCOMSTR = "")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
suffix = get_config_var('EXT_SUFFIX')
|
||||||
|
|
||||||
sources = {
|
sources = {
|
||||||
'dim_mod_src' : ['memalloc/dim_mod.f'],
|
'dim_mod_src' : ['memalloc/dim_mod.f'],
|
||||||
|
@ -10,21 +46,19 @@ sources = {
|
||||||
'cluster_gen_src' : Glob('cluster_gen/*.f'),
|
'cluster_gen_src' : Glob('cluster_gen/*.f'),
|
||||||
'common_sub_src' : Glob('common_sub/*.f'),
|
'common_sub_src' : Glob('common_sub/*.f'),
|
||||||
'renormalization_src' : Glob('renormalization/*.f'),
|
'renormalization_src' : Glob('renormalization/*.f'),
|
||||||
'phd_se_noso_nosp_nosym_src': Glob('phd_se_noso_nosp_nosym/*.f'),
|
'phd_se_noso_nosp_nosym_src': Glob('phd_se_noso_nosp_nosym/*.f'),
|
||||||
'phd_mi_noso_nosp_nosym_src': Glob('phd_mi_noso_nosp_nosym/*.f'),
|
'phd_mi_noso_nosp_nosym_src': Glob('phd_mi_noso_nosp_nosym/*.f'),
|
||||||
'eig_common_src' : Glob('eig/common/*.f'),
|
'eig_common_src' : Glob('eig/common/*.f'),
|
||||||
'eig_mi_src' : Glob('eig/mi/*.f'),
|
'eig_mi_src' : Glob('eig/mi/*.f'),
|
||||||
'eig_pw_src' : Glob('eig/pw/*.f')}
|
'eig_pw_src' : Glob('eig/pw/*.f')}
|
||||||
|
|
||||||
objects = {}
|
objects = {}
|
||||||
for k, v in sources.items():
|
for k, v in sources.items():
|
||||||
objects[k.replace('_src', '_obj')] = env.Object(sources[k])
|
objects[k.replace('_src', '_obj')] = env.Object(v)
|
||||||
|
|
||||||
Requires(objects['memalloc_obj'], objects['dim_mod_obj'])
|
Requires(objects['memalloc_obj'], objects['dim_mod_obj'])
|
||||||
|
|
||||||
|
|
||||||
suffix = get_config_var('EXT_SUFFIX')
|
|
||||||
cmd = "f2py3 -I. " + " ".join([str(_) for _ in objects if str(_).endswith('.o')]) + f" -c -m $MODULENAME $SOURCE"
|
|
||||||
|
|
||||||
shared_objects = {
|
shared_objects = {
|
||||||
'phd_se_noso_nosp_nosym': 'phd_se_noso_nosp_nosym/main.f',
|
'phd_se_noso_nosp_nosym': 'phd_se_noso_nosp_nosym/main.f',
|
||||||
|
@ -34,7 +68,9 @@ shared_objects = {
|
||||||
modules = {}
|
modules = {}
|
||||||
|
|
||||||
for k, v in shared_objects.items():
|
for k, v in shared_objects.items():
|
||||||
env['MODULENAME'] = k
|
cmd = "f2py3 -I. " + " ".join([str(_) for _ in objects if str(_).endswith('.o')]) + f"$F2PY_OPTS -c -m {k} $SOURCE"
|
||||||
modules[k] = env.Command(k + suffix, v, cmd)
|
cmd += " 1>/dev/null"
|
||||||
Requires(modules[k], objects.values())
|
modules[k + suffix] = env.Command(k + suffix, v, Action(cmd, 'Building Python module $TARGET'))
|
||||||
|
Requires(modules[k + suffix], objects.values())
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue