diff options
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 4 | ||||
-rw-r--r-- | mesonbuild/compilers.py | 5 | ||||
-rw-r--r-- | mesonbuild/environment.py | 3 |
3 files changed, 12 insertions, 0 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 188823a..b002656 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -257,10 +257,14 @@ int dummy; # Languages that can mix with C or C++ but don't support unity builds yet # because the syntax we use for unity builds is specific to C/++/ObjC/++. + # Assembly files cannot be unitified and neither can LLVM IR files langs_cant_unity = ('d', 'fortran') def get_target_source_can_unity(self, target, source): if isinstance(source, File): source = source.fname + if self.environment.is_llvm_ir(source) or \ + self.environment.is_assembly(source): + return False suffix = os.path.splitext(source)[1][1:] for lang in self.langs_cant_unity: if not lang in target.compilers: diff --git a/mesonbuild/compilers.py b/mesonbuild/compilers.py index 08ebbfb..e474d2e 100644 --- a/mesonbuild/compilers.py +++ b/mesonbuild/compilers.py @@ -59,6 +59,11 @@ def is_source(fname): suffix = fname.split('.')[-1] return suffix in clike_suffixes +def is_assembly(fname): + if hasattr(fname, 'fname'): + fname = fname.fname + return fname.split('.')[-1].lower() == 's' + def is_llvm_ir(fname): if hasattr(fname, 'fname'): fname = fname.fname diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py index 0e8364c..44c5965 100644 --- a/mesonbuild/environment.py +++ b/mesonbuild/environment.py @@ -271,6 +271,9 @@ class Environment(): def is_source(self, fname): return is_source(fname) + def is_assembly(self, fname): + return is_assembly(fname) + def is_llvm_ir(self, fname): return is_llvm_ir(fname) |