'Return a boolean indicating whether funcname is supported on
the current platform.  The optional arguments can be used to
augment the compilation environment.'

def has_function(self, funcname, includes=None, include_dirs=None, libraries=None, library_dirs=None):

    import tempfile
    if (includes is None):
        includes = []
    if (include_dirs is None):
        include_dirs = []
    if (libraries is None):
        libraries = []
    if (library_dirs is None):
        library_dirs = []
    (fd, fname) = tempfile.mkstemp('.c', funcname, text=True)
    f = os.fdopen(fd, 'w')
    try:
        for incl in includes:
            f.write(('#include    "%s"\n' % incl))
        f.write(('main    (int    argc,    char    **argv)    {\n                %s();\n}\n' % funcname))
    finally:
        f.close()
    try:
        objects = self.compile([fname], include_dirs=include_dirs)
    except CompileError:
        return False
    try:
        self.link_executable(objects, 'a.out', libraries=libraries, library_dirs=library_dirs)
    except (LinkError, TypeError):
        return False
    return True
