msspec_python3/src/msspec/spec/fortran/SConstruct

72 lines
3.0 KiB
Python

Import('env')
import os
# Configure the environment
env_spec = env.Clone()
cwd = Dir('.').get_abspath()
env_spec.Append(FORTRANFLAGS=['-I' + cwd,'-J' + cwd])
env_spec.Append(F2PY_OPTS=['-I' + cwd])
# define sources
dim_mod = ['memalloc/dim_mod.f']
memalloc = ['memalloc/modules.f', 'memalloc/allocation.f']
cluster_gen = Glob('cluster_gen/*.f')
common_sub = Glob('common_sub/*.f')
renormalization = Glob('renormalization/*.f')
phd_se_noso_nosp_nosym = env_spec.FilteredGlob('phd_se_noso_nosp_nosym/*.f', omit=['main.f'])
phd_mi_noso_nosp_nosym = env_spec.FilteredGlob('phd_mi_noso_nosp_nosym/*.f', omit=['main.f'])
eig_common = Glob('eig/common/*.f')
eig_mi = env_spec.FilteredGlob('eig/mi/*.f', omit=['main.f'])
eig_pw = env_spec.FilteredGlob('eig/pw/*.f', omit=['main.f'])
comp_curves = ['treatment/comp_curves.f']
conf = Configure(env_spec, log_file='./config.log')
if conf.CheckLib('lapack'):
env_spec.Append(F2PY_OPTS = "-llapack")
eig_mi = [f for f in eig_mi if str(f).find('lapack') == -1]
phd_mi_noso_nosp_nosym = [f for f in phd_mi_noso_nosp_nosym if str(f).find('lapack') == -1]
env_spec = conf.Finish()
env_spec.Append(FORTRANFLAGS='-fno-automatic')
# define objects
dim_mod_obj = env_spec.Object(dim_mod)
memalloc_obj = env_spec.Object(memalloc)
cluster_gen_obj = env_spec.Object(cluster_gen)
common_sub_obj = env_spec.Object(common_sub)
renormalization_obj = env_spec.Object(renormalization)
phd_se_noso_nosp_nosym_obj = env_spec.Object(phd_se_noso_nosp_nosym)
phd_mi_noso_nosp_nosym_obj = env_spec.Object(phd_mi_noso_nosp_nosym)
eig_common_obj = env_spec.Object(eig_common)
eig_pw_obj = env_spec.Object(eig_pw)
eig_mi_obj = env_spec.Object(eig_mi)
comp_curves_obj = env_spec.Object(comp_curves)
Requires(memalloc_obj, dim_mod_obj)
# define Python extensions
common_deps = dim_mod_obj + memalloc_obj + cluster_gen_obj + common_sub_obj
deps = common_deps + renormalization_obj + phd_se_noso_nosp_nosym_obj
phd_se_mod = env_spec.F2py('_phd_se_noso_nosp_nosym.so', ['phd_se_noso_nosp_nosym/main.f'] + deps)
env_spec.InstallModule(phd_se_mod)
deps = common_deps + renormalization_obj + phd_mi_noso_nosp_nosym_obj
phd_mi_mod = env_spec.F2py('_phd_mi_noso_nosp_nosym.so', ['phd_mi_noso_nosp_nosym/main.f'] + deps)
env_spec.InstallModule(phd_mi_mod)
deps = common_deps + renormalization_obj + eig_common_obj + eig_mi_obj
eig_mi_mod = env_spec.F2py('_eig_mi.so', ['eig/mi/main.f'] + deps)
env_spec.InstallModule(eig_mi_mod)
deps = common_deps + renormalization_obj + eig_common_obj + eig_pw_obj
eig_pw_mod = env_spec.F2py('_eig_pw.so', ['eig/pw/main.f'] + deps)
env_spec.InstallModule(eig_pw_mod)
deps = comp_curves_obj
comp_curve_mod = env_spec.F2py('_comp_curves.so', ['treatment/main.f'] + deps)
env_spec.InstallModule(comp_curve_mod)
# Alias
env_spec.Alias('spec', [phd_se_mod, phd_mi_mod, eig_pw_mod, eig_mi_mod])