aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2017-04-08 22:50:53 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2017-04-08 22:50:53 +0300
commitcbc8d6e537ce9f57436392ce1ce2d4b6384468ae (patch)
tree1bbc0f6329fcee48426aceff12d4204f635553af /mesonbuild
parenta718f1a334b798dac739f93d1f2832c99609cdd6 (diff)
downloadmeson-cbc8d6e537ce9f57436392ce1ce2d4b6384468ae.zip
meson-cbc8d6e537ce9f57436392ce1ce2d4b6384468ae.tar.gz
meson-cbc8d6e537ce9f57436392ce1ce2d4b6384468ae.tar.bz2
Fix link whole on VS backend.
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/backend/vs2010backend.py4
-rw-r--r--mesonbuild/compilers.py2
2 files changed, 6 insertions, 0 deletions
diff --git a/mesonbuild/backend/vs2010backend.py b/mesonbuild/backend/vs2010backend.py
index 139360c..b50b91c 100644
--- a/mesonbuild/backend/vs2010backend.py
+++ b/mesonbuild/backend/vs2010backend.py
@@ -225,6 +225,8 @@ class Vs2010Backend(backends.Backend):
elif isinstance(target, build.BuildTarget):
for ldep in target.link_targets:
all_deps[ldep.get_id()] = ldep
+ for ldep in target.link_whole_targets:
+ 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():
@@ -918,6 +920,8 @@ class Vs2010Backend(backends.Backend):
for t in target.get_dependencies():
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:
+ linkname = compiler.get_link_whole_for(linkname)[0]
additional_links.append(linkname)
for lib in self.get_custom_target_provided_libraries(target):
additional_links.append(self.relpath(lib, self.get_target_dir(target)))
diff --git a/mesonbuild/compilers.py b/mesonbuild/compilers.py
index 94ee2f1..54e959c 100644
--- a/mesonbuild/compilers.py
+++ b/mesonbuild/compilers.py
@@ -2281,6 +2281,8 @@ class VisualStudioCCompiler(CCompiler):
def get_link_whole_for(self, args):
# Only since VS2015
+ if not isinstance(args, list):
+ args = [args]
return ['/WHOLEARCHIVE:' + x for x in args]