diff options
author | Matthias Klumpp <matthias@tenstral.net> | 2017-09-12 14:29:23 +0200 |
---|---|---|
committer | Matthias Klumpp <matthias@tenstral.net> | 2017-09-12 17:32:03 +0200 |
commit | 6cd3f066b4c4e9ffbe7c8af6a183a6ebe39925dc (patch) | |
tree | 4f27c3d8dc22fdfdf5659f09405ed35dcc5b9e21 /mesonbuild | |
parent | d83c2894428104188cd5f75565ee7bd2b4fdcd54 (diff) | |
download | meson-6cd3f066b4c4e9ffbe7c8af6a183a6ebe39925dc.zip meson-6cd3f066b4c4e9ffbe7c8af6a183a6ebe39925dc.tar.gz meson-6cd3f066b4c4e9ffbe7c8af6a183a6ebe39925dc.tar.bz2 |
d: Implement specific properties for D features
Diffstat (limited to 'mesonbuild')
-rw-r--r-- | mesonbuild/build.py | 20 | ||||
-rw-r--r-- | mesonbuild/compilers/d.py | 2 | ||||
-rw-r--r-- | mesonbuild/interpreter.py | 8 |
3 files changed, 26 insertions, 4 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py index 89689d7..2e27153 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -36,6 +36,9 @@ known_basic_kwargs = {'install': True, 'vala_args': True, 'fortran_args': True, 'd_args': True, + 'd_feature_import_dirs': True, + 'd_feature_unittest': True, + 'd_feature_versions': True, 'java_args': True, 'rust_args': True, 'link_args': True, @@ -351,11 +354,11 @@ class BuildTarget(Target): # 1. Pre-existing objects provided by the user with the `objects:` kwarg # 2. Compiled objects created by and extracted from another target self.process_objectlist(objects) + self.process_compilers() self.process_kwargs(kwargs, environment) self.check_unknown_kwargs(kwargs) if not self.sources and not self.generated and not self.objects: raise InvalidArguments('Build target %s has no sources.' % name) - self.process_compilers() self.validate_sources() self.validate_cross_install(environment) @@ -669,8 +672,23 @@ class BuildTarget(Target): self.vala_header = kwargs.get('vala_header', self.name + '.h') self.vala_vapi = kwargs.get('vala_vapi', self.name + '.vapi') self.vala_gir = kwargs.get('vala_gir', None) + dlist = stringlistify(kwargs.get('d_args', [])) self.add_compiler_args('d', dlist) + dfeatures = dict() + dfeature_unittest = kwargs.get('d_feature_unittest', False) + if dfeature_unittest: + dfeatures['unittest'] = dfeature_unittest + dfeature_versions = kwargs.get('d_feature_versions', None) + if dfeature_versions: + dfeatures['versions'] = dfeature_versions + dfeature_import_dirs = kwargs.get('d_feature_import_dirs', None) + if dfeature_import_dirs: + dfeatures['import_dirs'] = dfeature_import_dirs + if dfeatures: + if 'd' in self.compilers: + self.add_compiler_args('d', self.compilers['d'].get_feature_args(dfeatures)) + self.link_args = flatten(kwargs.get('link_args', [])) for i in self.link_args: if not isinstance(i, str): diff --git a/mesonbuild/compilers/d.py b/mesonbuild/compilers/d.py index 7fc21cc..9739f28 100644 --- a/mesonbuild/compilers/d.py +++ b/mesonbuild/compilers/d.py @@ -93,7 +93,7 @@ class DCompiler(Compiler): # FIXME: Make this work for Windows, MacOS and cross-compiling return get_gcc_soname_args(GCC_STANDARD, prefix, shlib_name, suffix, path, soversion, is_shared_module) - def get_feature_args(self, args, kwargs): + def get_feature_args(self, kwargs): res = [] if 'unittest' in kwargs: unittest = kwargs.pop('unittest') diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index c6cface..c72fa3f 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -756,15 +756,16 @@ class CompilerHolder(InterpreterObject): # At time, only D compilers have this feature. if not hasattr(self.compiler, 'get_feature_args'): raise InterpreterException('This {} compiler has no feature arguments.'.format(self.compiler.get_display_language())) - return self.compiler.get_feature_args(args, kwargs) + return self.compiler.get_feature_args(kwargs) def unittest_args_method(self, args, kwargs): ''' This function is deprecated and should not be used. + It can be removed in a future version of Meson. ''' if not hasattr(self.compiler, 'get_feature_args'): raise InterpreterException('This {} compiler has no feature arguments.'.format(self.compiler.get_display_language())) - return self.compiler.get_feature_args(args, {'unittest': 'true'}) + return self.compiler.get_feature_args({'unittest': 'true'}) def has_member_method(self, args, kwargs): if len(args) != 2: @@ -1258,6 +1259,9 @@ pch_kwargs = set(['c_pch', 'cpp_pch']) lang_arg_kwargs = set(['c_args', 'cpp_args', 'd_args', + 'd_feature_import_dirs', + 'd_feature_unittest', + 'd_feature_versions', 'fortran_args', 'java_args', 'objc_args', |