diff options
author | Xavier Claessens <xavier.claessens@collabora.com> | 2018-04-24 16:27:43 -0400 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek.chauhan@gmail.com> | 2018-04-30 16:06:24 +0000 |
commit | 8c381e1786d0fbeb2136187c6d98f4000e8962bf (patch) | |
tree | ab35922cc6d427a2d19cea17c2b25c6cfc7388af /mesonbuild/compilers/c.py | |
parent | d52f892de96d40a4d4a8de278e861c911223a4c3 (diff) | |
download | meson-8c381e1786d0fbeb2136187c6d98f4000e8962bf.zip meson-8c381e1786d0fbeb2136187c6d98f4000e8962bf.tar.gz meson-8c381e1786d0fbeb2136187c6d98f4000e8962bf.tar.bz2 |
has_multi_link_arguments: Some compilers needs -Wl,--fatal-warnings
ld does not treat wrong -z options as fatal by default.
Diffstat (limited to 'mesonbuild/compilers/c.py')
-rw-r--r-- | mesonbuild/compilers/c.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/mesonbuild/compilers/c.py b/mesonbuild/compilers/c.py index 88571a3..e811096 100644 --- a/mesonbuild/compilers/c.py +++ b/mesonbuild/compilers/c.py @@ -59,6 +59,9 @@ class CCompiler(Compiler): else: self.exe_wrapper = exe_wrapper + # Set to None until we actually need to check this + self.has_fatal_warnings_link_arg = None + def needs_static_linker(self): return True # When compiling static libraries, so yes. @@ -871,6 +874,17 @@ class CCompiler(Compiler): return self.has_arguments(args, env, code, mode='compile') def has_multi_link_arguments(self, args, env): + # First time we check for link flags we need to first check if we have + # --fatal-warnings, otherwise some linker checks could give some + # false positive. + fatal_warnings_args = ['-Wl,--fatal-warnings'] + if self.has_fatal_warnings_link_arg is None: + self.has_fatal_warnings_link_arg = False + self.has_fatal_warnings_link_arg = self.has_multi_link_arguments(fatal_warnings_args, env) + + if self.has_fatal_warnings_link_arg: + args = fatal_warnings_args + args + args = self.linker_to_compiler_args(args) code = 'int main(int argc, char **argv) { return 0; }' return self.has_arguments(args, env, code, mode='link') |