diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2020-01-27 18:29:22 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-27 18:29:22 +0200 |
commit | a51c9af921d0ba05aa173b8a1a4351eacb575be0 (patch) | |
tree | 8207935e73c6c8e82f8c38c1ff130cbfe5642249 /mesonbuild/interpreter.py | |
parent | 9e07f8d8e6bb088252ac11b3e663ff3d93c8020a (diff) | |
parent | 202c89d0b665a536a738c59dcde1f374047a346e (diff) | |
download | meson-a51c9af921d0ba05aa173b8a1a4351eacb575be0.zip meson-a51c9af921d0ba05aa173b8a1a4351eacb575be0.tar.gz meson-a51c9af921d0ba05aa173b8a1a4351eacb575be0.tar.bz2 |
Merge pull request #6423 from dcbaker/declare-dependency-variables
Add ability to set and query arbitrary variables on declare_dependency objects
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r-- | mesonbuild/interpreter.py | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index f1ed2d4..908a555 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -483,7 +483,8 @@ class DependencyHolder(InterpreterObject, ObjectHolder): @FeatureNew('dep.get_variable', '0.51.0') @noPosargs - @permittedKwargs({'cmake', 'pkgconfig', 'configtool', 'default_value', 'pkgconfig_define'}) + @permittedKwargs({'cmake', 'pkgconfig', 'configtool', 'internal', 'default_value', 'pkgconfig_define'}) + @FeatureNewKwargs('dep.get_variable', '0.54.0', ['internal']) def variable_method(self, args, kwargs): return self.held_object.get_variable(**kwargs) @@ -2087,6 +2088,7 @@ permitted_kwargs = {'add_global_arguments': {'language', 'native'}, 'link_args', 'link_whole', 'version', + 'variables', }, 'executable': build.known_exe_kwargs, 'find_program': {'required', 'native', 'version', 'dirs'}, @@ -2385,6 +2387,7 @@ class Interpreter(InterpreterBase): return [mesonlib.File.from_source_file(self.environment.source_dir, self.subdir, fname) for fname in args] @FeatureNewKwargs('declare_dependency', '0.46.0', ['link_whole']) + @FeatureNewKwargs('declare_dependency', '0.54.0', ['variables']) @permittedKwargs(permitted_kwargs['declare_dependency']) @noPosargs def func_declare_dependency(self, node, args, kwargs): @@ -2399,6 +2402,12 @@ class Interpreter(InterpreterBase): deps = extract_as_list(kwargs, 'dependencies', unholder=True) compile_args = mesonlib.stringlistify(kwargs.get('compile_args', [])) link_args = mesonlib.stringlistify(kwargs.get('link_args', [])) + variables = kwargs.get('variables', {}) + if not isinstance(variables, dict): + raise InterpreterException('variables must be a dict.') + if not all(isinstance(v, str) for v in variables.values()): + # Because that is how they will come from pkg-config and cmake + raise InterpreterException('variables values be strings.') final_deps = [] for d in deps: try: @@ -2413,7 +2422,8 @@ class Interpreter(InterpreterBase): raise InterpreterException('''Entries in "link_with" may only be self-built targets, external dependencies (including libraries) must go to "dependencies".''') dep = dependencies.InternalDependency(version, incs, compile_args, - link_args, libs, libs_whole, sources, final_deps) + link_args, libs, libs_whole, sources, final_deps, + variables) return DependencyHolder(dep, self.subproject) @noKwargs |