aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/mesonlib.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2016-10-22 14:38:06 -0700
committerGitHub <noreply@github.com>2016-10-22 14:38:06 -0700
commit1e3e22c66edfa8172af445026f12d30659e1ead0 (patch)
tree6f011879a8a34d6fe1329897eb99453559e1fbf3 /mesonbuild/mesonlib.py
parent8b27a48d568a1da5cf699bd27bcdd9b23d8f5cf4 (diff)
parent7e9203fac9d35db0aede73c105db1baaccaaefef (diff)
downloadmeson-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.py16
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