diff options
author | Matthias Klumpp <matthias@tenstral.net> | 2018-02-18 16:54:49 +0100 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2018-02-20 19:35:28 +0200 |
commit | 7e0db58f81f2cee2134fb398d6d5b6a2ef05eaff (patch) | |
tree | c704e9d5b61928dfc33245268be7f939a9f38ac7 | |
parent | 8842839bb4c8dadaba1808535928ede7527d5b53 (diff) | |
download | meson-7e0db58f81f2cee2134fb398d6d5b6a2ef05eaff.zip meson-7e0db58f81f2cee2134fb398d6d5b6a2ef05eaff.tar.gz meson-7e0db58f81f2cee2134fb398d6d5b6a2ef05eaff.tar.bz2 |
d: gdc: Implement proper dependency gen support
Older versions of GDC had broken support for the -MQ flag (resulting in
a compiler error). New versions of GDC have this issue fixed (some older
versions received a backport). Starting with GCC 7.1 we can assume
dependency generation to always work reliably.
-rw-r--r-- | mesonbuild/compilers/d.py | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/mesonbuild/compilers/d.py b/mesonbuild/compilers/d.py index 9681a9f..3320736 100644 --- a/mesonbuild/compilers/d.py +++ b/mesonbuild/compilers/d.py @@ -81,7 +81,7 @@ class DCompiler(Compiler): return objfile + '.' + self.get_depfile_suffix() def get_depfile_suffix(self): - return 'dep' + return 'deps' def get_pic_args(self): return ['-fPIC'] @@ -233,13 +233,20 @@ class GnuDCompiler(DCompiler): '3': default_warn_args + ['-Wextra', '-Wpedantic']} self.base_options = ['b_colorout', 'b_sanitize', 'b_staticpic'] + self._has_color_support = version_compare(self.version, '>=4.9') + # dependencies were implemented before, but broken - support was fixed in GCC 7.1+ + # (and some backported versions) + self._has_deps_support = version_compare(self.version, '>=7.1') + def get_colorout_args(self, colortype): - if version_compare(self.version, '>=4.9.0'): + if self._has_color_support: return gnu_color_args[colortype][:] return [] def get_dependency_gen_args(self, outtarget, outfile): - return ['-fmake-deps=' + outfile] + if not self._has_deps_support: + return [] + return ['-MD', '-MQ', outtarget, '-MF', outfile] def get_output_args(self, target): return ['-o', target] |