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])