diff options
author | David Cournapeau <cournape@gmail.com> | 2012-10-09 22:10:54 +0100 |
---|---|---|
committer | David Cournapeau <cournape@gmail.com> | 2012-10-09 22:11:16 +0100 |
commit | fd9ee7317a54ca1fa891a721476a0464308bcd72 (patch) | |
tree | f01de8aacad4a45c6c026701ba7294525a654741 /bscript | |
parent | 8be8ce82453be30deae730920ba863db398d3051 (diff) | |
download | numpy-fd9ee7317a54ca1fa891a721476a0464308bcd72.tar.gz |
REF: move blas/lapack check into bento.
Diffstat (limited to 'bscript')
-rw-r--r-- | bscript | 111 |
1 files changed, 5 insertions, 106 deletions
@@ -25,9 +25,9 @@ from bento.utils.utils \ from bento.backends.waf_backend \ import \ WAF_TOOLDIR - -import waflib -from waflib import Options +from bento.backends.waf_tools \ + import \ + blas_lapack sys.path.insert(0, os.getcwd()) try: @@ -35,82 +35,6 @@ try: finally: sys.path.pop(0) -import collections -_PLATFORM_TO_DEFAULT = collections.defaultdict(lambda: "atlas") -_PLATFORM_TO_DEFAULT.update({ - "win32": "mkl", - "darwin": "accelerate", -}) - -_OPTIMIZED_CBLAS_TO_KWARGS = { - "mkl": {"lib": "mkl_intel_c,mkl_intel_thread,mkl_core,libiomp5md".split(",")}, - "atlas": {"lib": ["cblas", "atlas"]}, - "accelerate": {"framework": ["Accelerate"]}, - "openblas": {"lib": ["openblas"]}, -} - -_OPTIMIZED_LAPACK_TO_KWARGS = { - "mkl": {"lib": "mkl_lapack95,mkl_blas95,mkl_intel_c,mkl_intel_thread,mkl_core,libiomp5md".split(",")}, - "atlas": {"lib": ["lapack", "f77blas", "cblas", "atlas"]}, - "accelerate": {"framework": ["Accelerate"]}, - "openblas": {"lib": ["openblas"]}, -} - -def get_optimized_name(context): - o, a = context.options_context.parser.parse_args(context.command_argv) - if o.blas_lapack_type == "default" or o.blas_lapack_type is None: - optimized = _PLATFORM_TO_DEFAULT[sys.platform] - else: - optimized = o.blas_lapack_type - - return optimized - -def check_cblas(context, optimized): - conf = context.waf_context - - msg = "Checking for %s (CBLAS)" % optimized.upper() - - kwargs = _OPTIMIZED_CBLAS_TO_KWARGS[optimized] - kwargs.update({"msg": msg, "uselib_store": "CBLAS"}) - - try: - conf.check_cc(**kwargs) - conf.env.HAS_CBLAS = True - except waflib.Errors.ConfigurationError: - conf.env.HAS_CBLAS = False - -def check_lapack(context, optimized): - conf = context.waf_context - - msg = "Checking for %s (LAPACK)" % optimized.upper() - if optimized in ["openblas", "atlas"]: - check_fortran(context) - - kwargs = _OPTIMIZED_LAPACK_TO_KWARGS[optimized] - kwargs.update({"msg": msg, "uselib_store": "LAPACK"}) - - try: - conf.check_cc(**kwargs) - conf.env.HAS_LAPACK = True - except waflib.Errors.ConfigurationError: - conf.env.HAS_LAPACK = False - -def check_blas_lapack(context): - optimized = get_optimized_name(context) - - o, a = context.options_context.parser.parse_args(context.command_argv) - if o.blas_lapack_libdir: - context.waf_context.env.append_value("LIBPATH", o.blas_lapack_libdir) - - check_cblas(context, optimized) - check_lapack(context, optimized) - - # You can manually set up blas/lapack as follows: - #conf.env.HAS_CBLAS = True - #conf.env.LIB_CBLAS = ["cblas", "atlas"] - #conf.env.HAS_LAPACK = True - #conf.env.LIB_LAPACK = ["lapack", "f77blas", "cblas", "atlas"] - def compute_git_revision(top_node): git_repo_node = top_node.find_node(".git") if git_repo_node and cmd_is_runnable(["git", "--version"]): @@ -131,19 +55,6 @@ def _register_metadata(context): context.register_metadata("is_released", _SETUP_PY.ISRELEASED) context.register_metadata("full_version", full_version) -def check_fortran(context): - opts = context.waf_options_context - conf = context.waf_context - - opts.load("compiler_fc") - Options.options.check_fc = "gfortran" - - conf.load("compiler_fc") - conf.load("ordered_c", tooldir=[WAF_TOOLDIR]) - - conf.check_fortran_verbose_flag() - conf.check_fortran_clib() - @hooks.post_configure def post_configure(context): conf = context.waf_context @@ -157,7 +68,7 @@ def post_configure(context): archs = [conf.env.DEFAULT_CC_ARCH] conf.env.ARCH = archs - check_blas_lapack(context) + blas_lapack.check_blas_lapack(context) @hooks.pre_build def pre_build(context): @@ -169,16 +80,4 @@ def pre_sdist(context): @hooks.options def options(global_context): - from bento.commands.options import Option - - global_context.add_option_group("configure", "blas_lapack", "blas/lapack") - - available_optimized = ",".join(_OPTIMIZED_LAPACK_TO_KWARGS.keys()) - global_context.add_option("configure", - Option("--blas-lapack-type", help="Which blas lapack to use (%s)" % available_optimized), - "blas_lapack") - - global_context.add_option("configure", - Option("--with-blas-lapack-libdir", dest="blas_lapack_libdir", - help="Where to look for BLAS/LAPACK dir"), - "blas_lapack") + blas_lapack.add_options(global_context) |