Merge pull request #1828 from MikeWey/dlang-compiles
Add 'compiles' and 'has_multi_arguments' for dlang.
This commit is contained in:
commit
19faebe09f
|
@ -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…
Reference in New Issue