'Determine the implicit outputs for an idl file. Returns output
directory, outputs, and variables and flags that are required.'

def GetIdlBuildData(self, source, config):

    config = self._TargetConfig(config)
    midl_get = self._GetWrapper(self, self.msvs_settings[config], 'VCMIDLTool')
    def midl(name, default=None):
        return self.ConvertVSMacros(midl_get(name, default=default), config=config)
    tlb = midl('TypeLibraryName', default='${root}.tlb')
    header = midl('HeaderFileName', default='${root}.h')
    dlldata = midl('DLLDataFileName', default='dlldata.c')
    iid = midl('InterfaceIdentifierFileName', default='${root}_i.c')
    proxy = midl('ProxyFileName', default='${root}_p.c')
    outdir = midl('OutputDirectory', default='')
    output = [header, dlldata, iid, proxy]
    variables = [('tlb', tlb), ('h', header), ('dlldata', dlldata), ('iid', iid), ('proxy', proxy)]
    target_platform = ('win32' if (self.GetArch(config) == 'x86') else 'x64')
    flags = ['/char', 'signed', '/env', target_platform, '/Oicf']
    return (outdir, output, variables, flags)
