diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2016-10-22 14:38:06 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-10-22 14:38:06 -0700 |
commit | 1e3e22c66edfa8172af445026f12d30659e1ead0 (patch) | |
tree | 6f011879a8a34d6fe1329897eb99453559e1fbf3 /mesonbuild/mesonlib.py | |
parent | 8b27a48d568a1da5cf699bd27bcdd9b23d8f5cf4 (diff) | |
parent | 7e9203fac9d35db0aede73c105db1baaccaaefef (diff) | |
download | meson-1e3e22c66edfa8172af445026f12d30659e1ead0.zip meson-1e3e22c66edfa8172af445026f12d30659e1ead0.tar.gz meson-1e3e22c66edfa8172af445026f12d30659e1ead0.tar.bz2 |
Merge pull request #938 from centricular/fix-unity-builds
Several commits that fix unity builds
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 98d8591..ca72985 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 |