aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/build.py3
-rw-r--r--mesonbuild/dependencies.py9
-rw-r--r--mesonbuild/interpreter.py18
-rw-r--r--test cases/common/87 declare dep/entity/meson.build3
-rw-r--r--test cases/linuxlike/1 pkg-config/meson.build2
5 files changed, 30 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
diff --git a/test cases/common/87 declare dep/entity/meson.build b/test cases/common/87 declare dep/entity/meson.build
index 12050b5..80bbf36 100644
--- a/test cases/common/87 declare dep/entity/meson.build
+++ b/test cases/common/87 declare dep/entity/meson.build
@@ -4,4 +4,7 @@ entity_dep = declare_dependency(link_with : entity_lib,
include_directories : include_directories('.'),
sources : 'entity2.c',
compile_args : ['-DUSING_ENT=1'],
+ version : '1.2.3',
link_args : []) # No simple way of testing linker flags :(.
+
+assert(entity_dep.version().version_compare('==1.2.3'), 'Declare_dep has incorrect version string.')
diff --git a/test cases/linuxlike/1 pkg-config/meson.build b/test cases/linuxlike/1 pkg-config/meson.build
index b7f40db..a18acc5 100644
--- a/test cases/linuxlike/1 pkg-config/meson.build
+++ b/test cases/linuxlike/1 pkg-config/meson.build
@@ -5,6 +5,8 @@ project('external dependency', 'c')
dep = dependency('zlib', version : '>=1.2.8')
exe = executable('zlibprog', 'prog.c', dependencies : dep)
+assert(dep.version().version_compare('>=1.2.8'), 'Pkg-config version numbers exposed incorrectly.')
+
test('zlibtest', exe)
# Test that dependencies of dependencies work.