def pre_build_hook(build_ext, ext):
    from scipy._build_utils.compiler_helper import (
        set_cxx_flags_hook, try_add_flag)
    cc = build_ext._cxx_compiler
    args = ext.extra_compile_args

    set_cxx_flags_hook(build_ext, ext)

    if cc.compiler_type == 'msvc':
        args.append('/EHsc')
    else:
        try_add_flag(args, cc, '-fvisibility=hidden')


def configuration(parent_package='', top_path=None):
    from numpy.distutils.misc_util import Configuration

    config = Configuration('_uarray', parent_package, top_path)
    config.add_data_files('LICENSE')
    ext = config.add_extension('_uarray',
                               sources=['_uarray_dispatch.cxx', 'vectorcall.cxx'],
                               depends=['small_dynamic_array.h', 'vectorcall.h'],
                               language='c++')
    ext._pre_build_hook = pre_build_hook
    return config


if __name__ == '__main__':
    from numpy.distutils.core import setup
    setup(**configuration(top_path='').todict())
