diff options
Diffstat (limited to 'mesonbuild/mesonlib.py')
-rw-r--r-- | mesonbuild/mesonlib.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/mesonbuild/mesonlib.py b/mesonbuild/mesonlib.py index abb5641..904d10d 100644 --- a/mesonbuild/mesonlib.py +++ b/mesonbuild/mesonlib.py @@ -70,6 +70,22 @@ class File: def __hash__(self): return hash((self.fname, self.subdir, self.is_built)) +def get_compiler_for_source(compilers, src): + for comp in compilers: + if comp.can_compile(src): + return comp + raise RuntimeError('No specified compiler can handle file {!s}'.format(src)) + +def classify_unity_sources(compilers, sources): + compsrclist = {} + for src in sources: + comp = get_compiler_for_source(compilers, src) + if comp not in compsrclist: + compsrclist[comp] = [src] + else: + compsrclist[comp].append(src) + return compsrclist + def flatten(item): if not isinstance(item, list): return item |