aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Klumpp <matthias@tenstral.net>2018-02-18 16:54:49 +0100
committerJussi Pakkanen <jpakkane@gmail.com>2018-02-20 19:35:28 +0200
commit7e0db58f81f2cee2134fb398d6d5b6a2ef05eaff (patch)
treec704e9d5b61928dfc33245268be7f939a9f38ac7
parent8842839bb4c8dadaba1808535928ede7527d5b53 (diff)
downloadmeson-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.py13
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]