def process_compilers(self):
    '\n        Populate self.compilers, which is the list of compilers that this\n        target will use for compiling all its sources.\n        We also add compilers that were used by extracted objects to simplify\n        dynamic linker determination.\n        '
    if ((not self.sources) and (not self.generated) and (not self.objects)):
        return
    if self.is_cross:
        compilers = self.environment.coredata.cross_compilers
    else:
        compilers = self.environment.coredata.compilers
    sources = list(self.sources)
    for gensrc in self.generated:
        for s in gensrc.get_outputs():
            if (not is_object(s)):
                sources.append(s)
    for d in self.external_deps:
        if hasattr(d, 'held_object'):
            d = d.held_object
        for s in d.sources:
            if isinstance(s, (str, File)):
                sources.append(s)
    for o in self.objects:
        if (not isinstance(o, ExtractedObjects)):
            continue
        for s in o.srclist:
            if (not s.endswith(lang_suffixes['vala'])):
                sources.append(s)
    if sources:
        for s in sources:
            for (lang, compiler) in compilers.items():
                if compiler.can_compile(s):
                    if (lang not in self.compilers):
                        self.compilers[lang] = compiler
                    break
        self.compilers = OrderedDict(sorted(self.compilers.items(), key=(lambda t: sort_clink(t[0]))))
    if (('vala' in self.compilers) and ('c' not in self.compilers)):
        self.compilers['c'] = compilers['c']
Populate self.compilers, which is the list of compilers that this
target will use for compiling all its sources.
We also add compilers that were used by extracted objects to simplify
dynamic linker determination.
def process_compilers(self):
    '\n        Populate self.compilers, which is the list of compilers that this\n        target will use for compiling all its sources.\n        We also add compilers that were used by extracted objects to simplify\n        dynamic linker determination.\n        '
    if ((not self.sources) and (not self.generated) and (not self.objects)):
        return
    if self.is_cross:
        compilers = self.environment.coredata.cross_compilers
    else:
        compilers = self.environment.coredata.compilers
    sources = list(self.sources)
    for gensrc in self.generated:
        for s in gensrc.get_outputs():
            if (not is_object(s)):
                sources.append(s)
    for d in self.external_deps:
        if hasattr(d, 'held_object'):
            d = d.held_object
        for s in d.sources:
            if isinstance(s, (str, File)):
                sources.append(s)
    for o in self.objects:
        if (not isinstance(o, ExtractedObjects)):
            continue
        for s in o.srclist:
            if (not s.endswith(lang_suffixes['vala'])):
                sources.append(s)
    if sources:
        for s in sources:
            for (lang, compiler) in compilers.items():
                if compiler.can_compile(s):
                    if (lang not in self.compilers):
                        self.compilers[lang] = compiler
                    break
        self.compilers = OrderedDict(sorted(self.compilers.items(), key=(lambda t: sort_clink(t[0]))))
    if (('vala' in self.compilers) and ('c' not in self.compilers)):
        self.compilers['c'] = compilers['c']