diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2016-05-29 03:15:16 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2016-05-29 03:15:16 +0300 |
commit | cff4e7d29904250ff95feda85d8baa9da93652de (patch) | |
tree | ef3c3c8e9e02f6a7ffdb6094e3f52a44cbefa91f /mesonbuild | |
parent | b5013a573ae18ff009e498c778614712352f0b44 (diff) | |
download | meson-cff4e7d29904250ff95feda85d8baa9da93652de.zip meson-cff4e7d29904250ff95feda85d8baa9da93652de.tar.gz meson-cff4e7d29904250ff95feda85d8baa9da93652de.tar.bz2 |
Can query version strings of dependencies.
Diffstat (limited to 'mesonbuild')
-rw-r--r-- | mesonbuild/build.py | 3 | ||||
-rw-r--r-- | mesonbuild/dependencies.py | 9 | ||||
-rw-r--r-- | mesonbuild/interpreter.py | 18 |
3 files changed, 25 insertions, 5 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py index fcf1ac6..1052303 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -497,7 +497,8 @@ class BuildTarget(): for l in dep.libraries: self.link(l) # Those parts that are external. - extpart = dependencies.InternalDependency([], + extpart = dependencies.InternalDependency('undefined', + [], dep.compile_args, dep.link_args, [], [], []) diff --git a/mesonbuild/dependencies.py b/mesonbuild/dependencies.py index d8081b0..7462bd8 100644 --- a/mesonbuild/dependencies.py +++ b/mesonbuild/dependencies.py @@ -59,8 +59,9 @@ class Dependency(): return False class InternalDependency(Dependency): - def __init__(self, incdirs, compile_args, link_args, libraries, sources, ext_deps): + def __init__(self, version, incdirs, compile_args, link_args, libraries, sources, ext_deps): super().__init__() + self.version = version self.include_directories = incdirs self.compile_args = compile_args self.link_args = link_args @@ -74,6 +75,9 @@ class InternalDependency(Dependency): def get_link_args(self): return self.link_args + def get_version(self): + return self.version + class PkgConfigDependency(Dependency): pkgconfig_found = None @@ -188,6 +192,9 @@ class PkgConfigDependency(Dependency): def get_modversion(self): return self.modversion + def get_version(self): + return self.get_modversion() + def get_compile_args(self): return self.cargs diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index aac021a..3b9226a 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -225,20 +225,29 @@ class DependencyHolder(InterpreterObject): def __init__(self, dep): InterpreterObject.__init__(self) self.held_object = dep - self.methods.update({'found' : self.found_method}) + self.methods.update({'found' : self.found_method, + 'version': self.version_method}) def found_method(self, args, kwargs): return self.held_object.found() + def version_method(self, args, kwargs): + return self.held_object.get_version() + class InternalDependencyHolder(InterpreterObject): def __init__(self, dep): InterpreterObject.__init__(self) self.held_object = dep - self.methods.update({'found' : self.found_method}) + self.methods.update({'found' : self.found_method, + 'version': self.version_method, + }) def found_method(self, args, kwargs): return True + def version_method(self, args, kwargs): + return self.held_object.get_version() + class ExternalProgramHolder(InterpreterObject): def __init__(self, ep): InterpreterObject.__init__(self) @@ -1175,6 +1184,9 @@ class Interpreter(): @noPosargs def func_declare_dependency(self, node, args, kwargs): + version = kwargs.get('version', 'undefined') + if not isinstance(version, str): + raise InterpreterException('Version must be a string.') incs = kwargs.get('include_directories', []) if not isinstance(incs, list): incs = [incs] @@ -1199,7 +1211,7 @@ class Interpreter(): if not isinstance(d, (dependencies.Dependency, dependencies.ExternalLibrary, dependencies.InternalDependency)): raise InterpreterException('Dependencies must be external deps') final_deps.append(d) - dep = dependencies.InternalDependency(incs, compile_args, link_args, libs, sources, final_deps) + dep = dependencies.InternalDependency(version, incs, compile_args, link_args, libs, sources, final_deps) return InternalDependencyHolder(dep) @noKwargs |