aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/backend
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2019-05-02 22:21:56 +0300
committerGitHub <noreply@github.com>2019-05-02 22:21:56 +0300
commit7059c47aad2ef28046ceb8566f0c1d2f98e03cb1 (patch)
tree01bdf4592080181fbd7c89f2350ae8573f8bb98a /mesonbuild/backend
parent70997ca969dab0de7a800af7f7c7d6c7e25cf4ac (diff)
parentd74ab216db4e4eb7574813517b5a7edb44631e1c (diff)
downloadmeson-7059c47aad2ef28046ceb8566f0c1d2f98e03cb1.zip
meson-7059c47aad2ef28046ceb8566f0c1d2f98e03cb1.tar.gz
meson-7059c47aad2ef28046ceb8566f0c1d2f98e03cb1.tar.bz2
Merge pull request #5161 from TheQwertiest/feature/custom_target_link
Can link against custom_target[i]
Diffstat (limited to 'mesonbuild/backend')
-rw-r--r--mesonbuild/backend/backends.py4
-rw-r--r--mesonbuild/backend/vs2010backend.py16
2 files changed, 16 insertions, 4 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
index 4a4f7f4..e40bcbc 100644
--- a/mesonbuild/backend/backends.py
+++ b/mesonbuild/backend/backends.py
@@ -171,6 +171,8 @@ class Backend:
mlog.warning('custom_target {!r} has more than one output! '
'Using the first one.'.format(t.name))
filename = t.get_outputs()[0]
+ elif isinstance(t, build.CustomTargetIndex):
+ filename = t.get_outputs()[0]
else:
assert(isinstance(t, build.BuildTarget))
filename = t.get_filename()
@@ -214,7 +216,7 @@ class Backend:
return os.path.join(self.get_target_dir(target), link_lib)
elif isinstance(target, build.StaticLibrary):
return os.path.join(self.get_target_dir(target), target.get_filename())
- elif isinstance(target, build.CustomTarget):
+ elif isinstance(target, (build.CustomTarget, build.CustomTargetIndex)):
if not target.is_linkable_target():
raise MesonException('Tried to link against custom target "%s", which is not linkable.' % target.name)
return os.path.join(self.get_target_dir(target), target.get_filename())
diff --git a/mesonbuild/backend/vs2010backend.py b/mesonbuild/backend/vs2010backend.py
index d1bf1e5..afbd59b 100644
--- a/mesonbuild/backend/vs2010backend.py
+++ b/mesonbuild/backend/vs2010backend.py
@@ -249,9 +249,15 @@ class Vs2010Backend(backends.Backend):
all_deps[d.get_id()] = d
elif isinstance(target, build.BuildTarget):
for ldep in target.link_targets:
- all_deps[ldep.get_id()] = ldep
+ if isinstance(ldep, build.CustomTargetIndex):
+ all_deps[ldep.get_id()] = ldep.target
+ else:
+ all_deps[ldep.get_id()] = ldep
for ldep in target.link_whole_targets:
- all_deps[ldep.get_id()] = ldep
+ if isinstance(ldep, build.CustomTargetIndex):
+ all_deps[ldep.get_id()] = ldep.target
+ else:
+ all_deps[ldep.get_id()] = ldep
for obj_id, objdep in self.get_obj_target_deps(target.objects):
all_deps[obj_id] = objdep
for gendep in target.get_generated_sources():
@@ -1111,7 +1117,11 @@ class Vs2010Backend(backends.Backend):
# Add more libraries to be linked if needed
for t in target.get_dependencies():
- lobj = self.build.targets[t.get_id()]
+ if isinstance(t, build.CustomTargetIndex):
+ # We don't need the actual project here, just the library name
+ lobj = t
+ else:
+ lobj = self.build.targets[t.get_id()]
linkname = os.path.join(down, self.get_target_filename_for_linking(lobj))
if t in target.link_whole_targets:
# /WHOLEARCHIVE:foo must go into AdditionalOptions