diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2015-11-04 23:57:26 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2015-11-04 23:57:26 +0200 |
commit | 7b45e6f5f57c577bdb31b9b7b8b9be5190eacfe3 (patch) | |
tree | 931dae7d669512e60c21669e639d9833cfc2baf2 | |
parent | 8a1f2cdbbc96e15a3ec4b67133e04714e6976e22 (diff) | |
download | meson-7b45e6f5f57c577bdb31b9b7b8b9be5190eacfe3.zip meson-7b45e6f5f57c577bdb31b9b7b8b9be5190eacfe3.tar.gz meson-7b45e6f5f57c577bdb31b9b7b8b9be5190eacfe3.tar.bz2 |
Can store ext deps to internal deps. Closes #304.
-rw-r--r-- | build.py | 3 | ||||
-rw-r--r-- | dependencies.py | 3 | ||||
-rw-r--r-- | interpreter.py | 14 | ||||
-rw-r--r-- | test cases/linuxlike/2 external library/meson.build | 5 |
4 files changed, 23 insertions, 2 deletions
@@ -435,6 +435,8 @@ class BuildTarget(): return self.include_dirs def add_external_deps(self, deps): + if not isinstance(deps, list): + deps = [deps] for dep in deps: if hasattr(dep, 'held_object'): dep = dep.held_object @@ -443,6 +445,7 @@ class BuildTarget(): self.add_include_dirs(dep.include_directories) for l in dep.libraries: self.link(l) + self.add_external_deps(dep.ext_deps) elif isinstance(dep, dependencies.Dependency): self.external_deps.append(dep) self.process_sourcelist(dep.get_sources()) diff --git a/dependencies.py b/dependencies.py index d3a82db..12d8e5e 100644 --- a/dependencies.py +++ b/dependencies.py @@ -59,11 +59,12 @@ class Dependency(): return False class InternalDependency(): - def __init__(self, incdirs, libraries, sources): + def __init__(self, incdirs, libraries, sources, ext_deps): super().__init__() self.include_directories = incdirs self.libraries = libraries self.sources = sources + self.ext_deps = ext_deps class PkgConfigDependency(Dependency): pkgconfig_found = None diff --git a/interpreter.py b/interpreter.py index c78e83d..999c53a 100644 --- a/interpreter.py +++ b/interpreter.py @@ -1111,7 +1111,19 @@ class Interpreter(): if not isinstance(sources, list): sources = [sources] sources = self.source_strings_to_files(self.flatten(sources)) - dep = dependencies.InternalDependency(incs, libs, sources) + deps = kwargs.get('dependencies', []) + if not isinstance(deps, list): + deps = [deps] + final_deps = [] + for d in deps: + try: + d = d.held_object + except Exception: + pass + if not isinstance(d, (dependencies.Dependency, dependencies.ExternalLibrary)): + raise InterpreterException('Dependencies must be external deps') + final_deps.append(d) + dep = dependencies.InternalDependency(incs, libs, sources, deps) return InternalDependencyHolder(dep) @noKwargs diff --git a/test cases/linuxlike/2 external library/meson.build b/test cases/linuxlike/2 external library/meson.build index 8be4daa..3e2c172 100644 --- a/test cases/linuxlike/2 external library/meson.build +++ b/test cases/linuxlike/2 external library/meson.build @@ -22,3 +22,8 @@ assert(not cc.links(nolinkcode, name : 'Failing link'), 'Linking succeeded when e = executable('zprog', 'prog.c', dependencies : zlib) test('libtest', e) + +# Test that ext deps work via an internal dep. +intdep = declare_dependency(dependencies : zlib) +exe2 = executable('zprog2', 'prog.c', dependencies : intdep) +test('libtest2', exe2) |