import os
import sys

from bento.commands import hooks
import waflib

@hooks.post_configure
def configure(context):
    conf = context.waf_context

    conf.env.USE_WINCRYPT = False
    if conf.check_declaration("_WIN32", mandatory=False):
        conf.env.USE_WINCRYPT = True

    conf.env.NEEDS_MINGW32_WORKAROUND = False
    if sys.platform == "win32" and conf.check_declaration("__GNUC__", mandatory=False):
        conf.env.NEEDS_MINGW32_WORKAROUND = True

@hooks.pre_build
def build(context):
    bld = context.waf_context

    if bld.env.NEEDS_MINGW32_WORKAROUND:
        raise NotImplementedError("Check for mingw time workaround stuff")

    def builder(extension):
        includes = ["../core/include", "../core/include/numpy", "../core",
                    "../core/src/private"]
        kw = {}
        # enable unix large file support on 32 bit systems
        # (64 bit off_t, lseek -> lseek64 etc.)
        kw['defines'] = ['_FILE_OFFSET_BITS=64',
                         '_LARGEFILE_SOURCE=1',
                         '_LARGEFILE64_SOURCE=1']
        if bld.env.USE_WINCRYPT:
            kw["lib"] = "ADVAPI32"
        return context.default_builder(extension, includes=includes, **kw)
    context.register_builder("mtrand", builder)
