aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2014-03-07 20:10:59 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2014-03-07 20:10:59 +0200
commit26539f27fea7821e012aea5d7d609df891abd61a (patch)
tree8f4233ad755b37b72c491c89101da3fbe09616c6
parent9318203257c85209b5c60a9dc2cb59c5feaae23d (diff)
downloadmeson-26539f27fea7821e012aea5d7d609df891abd61a.zip
meson-26539f27fea7821e012aea5d7d609df891abd61a.tar.gz
meson-26539f27fea7821e012aea5d7d609df891abd61a.tar.bz2
Added a link_depends keyword for build targets.
-rw-r--r--backends.py2
-rw-r--r--build.py7
-rw-r--r--test cases/linuxlike/3 linker script/meson.build5
3 files changed, 12 insertions, 2 deletions
diff --git a/backends.py b/backends.py
index 3ab63d7..4692a46 100644
--- a/backends.py
+++ b/backends.py
@@ -1013,6 +1013,8 @@ class NinjaBackend(Backend):
if self.environment.coredata.coverage:
commands += linker.get_coverage_link_flags()
dep_targets = [self.get_dependency_filename(t) for t in dependencies]
+ dep_targets += [os.path.join(self.environment.source_dir,
+ target.subdir, t) for t in target.link_depends]
elem = NinjaBuildElement(outname, linker_rule, obj_list)
elem.add_dep(dep_targets)
elem.add_item('LINK_FLAGS', commands)
diff --git a/build.py b/build.py
index 0541890..06246e4 100644
--- a/build.py
+++ b/build.py
@@ -113,6 +113,7 @@ class BuildTarget():
self.external_deps = []
self.include_dirs = []
self.link_targets = []
+ self.link_depends = []
self.filename = 'no_name'
self.need_install = False
self.pch = {}
@@ -233,6 +234,12 @@ class BuildTarget():
for i in self.link_flags:
if not isinstance(i, str):
raise InvalidArguments('Link_flags arguments must be strings.')
+ self.link_depends = kwargs.get('link_depends', [])
+ if not isinstance(self.link_depends, list):
+ self.link_depends = [self.link_depends]
+ for i in self.link_depends:
+ if not isinstance(i, str):
+ raise InvalidArguments('Link_depends arguments must be strings.')
if 'version' in kwargs:
self.set_version(kwargs['version'])
if 'soversion' in kwargs:
diff --git a/test cases/linuxlike/3 linker script/meson.build b/test cases/linuxlike/3 linker script/meson.build
index 30fcf62..57acf6d 100644
--- a/test cases/linuxlike/3 linker script/meson.build
+++ b/test cases/linuxlike/3 linker script/meson.build
@@ -1,7 +1,8 @@
project('linker script', 'c')
-vflag = '-Wl,--version-script,@0@/bob.map'.format(meson.current_source_dir())
+mapfile = 'bob.map'
+vflag = '-Wl,--version-script,@0@/@1@'.format(meson.current_source_dir(), mapfile)
-l = shared_library('bob', 'bob.c', link_flags : vflag)
+l = shared_library('bob', 'bob.c', link_flags : vflag, link_depends : mapfile)
e = executable('prog', 'prog.c', link_with : l)
test('core', e)