diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2017-05-22 20:03:18 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-22 20:03:18 +0300 |
commit | 19faebe09f649bab21ca40a76fd517b6e245a453 (patch) | |
tree | 41f041647e425a0b5b03c8d9255bb965a7cb3dd2 /mesonbuild/compilers.py | |
parent | ef736bb0845e050d1bbda463561e6949e6ca9cff (diff) | |
parent | b337145ec6b83aa763a4d21eb0e4b2bf35ec880a (diff) | |
download | meson-19faebe09f649bab21ca40a76fd517b6e245a453.zip meson-19faebe09f649bab21ca40a76fd517b6e245a453.tar.gz meson-19faebe09f649bab21ca40a76fd517b6e245a453.tar.bz2 |
Merge pull request #1828 from MikeWey/dlang-compiles
Add 'compiles' and 'has_multi_arguments' for dlang.
Diffstat (limited to 'mesonbuild/compilers.py')
-rw-r--r-- | mesonbuild/compilers.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/mesonbuild/compilers.py b/mesonbuild/compilers.py index 86ed2f4..e7c02b2 100644 --- a/mesonbuild/compilers.py +++ b/mesonbuild/compilers.py @@ -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 = [] |