Merge pull request #1828 from MikeWey/dlang-compiles

Add 'compiles' and 'has_multi_arguments' for dlang.
pull/1842/head
Jussi Pakkanen 8 years ago committed by GitHub
commit 19faebe09f
  1. 37
      mesonbuild/compilers.py
  2. 8
      test cases/d/8 has multi arguments/meson.build

@ -1915,6 +1915,43 @@ class DCompiler(Compiler):
paths = paths + ':' + padding
return ['-L-rpath={}'.format(paths)]
def _get_compiler_check_args(self, env, extra_args, dependencies, mode='compile'):
if extra_args is None:
extra_args = []
elif isinstance(extra_args, str):
extra_args = [extra_args]
if dependencies is None:
dependencies = []
elif not isinstance(dependencies, list):
dependencies = [dependencies]
# Collect compiler arguments
args = CompilerArgs(self)
for d in dependencies:
# Add compile flags needed by dependencies
args += d.get_compile_args()
if mode == 'link':
# Add link flags needed to find dependencies
args += d.get_link_args()
if mode == 'compile':
# Add DFLAGS from the env
args += env.coredata.external_args[self.language]
elif mode == 'link':
# Add LDFLAGS from the env
args += env.coredata.external_link_args[self.language]
# extra_args must override all other arguments, so we add them last
args += extra_args
return args
def compiles(self, code, env, extra_args=None, dependencies=None, mode='compile'):
args = self._get_compiler_check_args(env, extra_args, dependencies, mode)
with self.compile(code, args, mode) as p:
return p.returncode == 0
def has_multi_arguments(self, args, env):
return self.compiles('int i;\n', env, extra_args=args)
@classmethod
def translate_args_to_nongnu(cls, args):
dcargs = []

@ -0,0 +1,8 @@
project('D has arguments test', 'd')
compiler = meson.get_compiler('d')
assert(compiler.compiles('int i;'), 'Basic code test does not comple: ' + compiler.get_id())
assert(compiler.has_multi_arguments(['-I.', '-J.']), 'Multi argument test does not work: ' + compiler.get_id())
assert(compiler.has_argument('-I.'), 'Basic argument test does not work: ' + compiler.get_id())
assert(compiler.has_argument('-flag_a_d_compiler_defenaitly_does_not_have') == false, 'Basic argument test does not work: ' + compiler.get_id())
Loading…
Cancel
Save