import sys

from bento.commands import hooks

@hooks.pre_build
def pre_build(context):
    default_builder = context.default_builder
    bld = context.waf_context
    f2py = bld.tools["f2py"]

    def fblas_builder(extension):
        source = extension.sources[:]
        if sys.platform == "darwin":
            source.pop(source.index("src/fblaswrap.f"))
            source.append("src/fblaswrap_veclib_c.c")
        return default_builder(extension,
                               features="c fc pyext bento cshlib f2py",
                               source=source,
                               use="FBLAS CLIB")
    context.register_builder("_fblas", fblas_builder)

    def cblas_builder(extension):
        if bld.env.HAS_CBLAS:
            return default_builder(extension,
                                   features="c fc pyext bento cshlib f2py",
                                   use="CBLAS")
    context.register_builder("_cblas", cblas_builder)

    context.tweak_extension("_flapack", features="c fc pyext bento cshlib f2py",
                          use="FLAPACK CLIB")

    def builder(extension):
        if bld.env.HAS_CLAPACK:
            return default_builder(extension,
                                   features="c pyext bento cshlib f2py",
                                   use="CLAPACK")
    context.register_builder("_clapack", builder)

    context.tweak_extension("_flinalg", features="c fc pyext bento cshlib f2py f2py_fortran",
                          use="FLAPACK CLIB")
    context.tweak_extension("calc_lwork", features="c fc pyext bento cshlib f2py f2py_fortran",
                          use="FLAPACK CLIB")
