aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/build.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2019-03-28 22:56:37 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2019-03-28 22:56:37 +0200
commit3196e4e141029aae0b800e7c39f6b3ed31d1cc02 (patch)
tree99aa0a9e2eb51e0214aab34c74754023b8d424ef /mesonbuild/build.py
parentfd624a848e4f77b60c5859363e3c22052e779d3b (diff)
downloadmeson-3196e4e141029aae0b800e7c39f6b3ed31d1cc02.zip
meson-3196e4e141029aae0b800e7c39f6b3ed31d1cc02.tar.gz
meson-3196e4e141029aae0b800e7c39f6b3ed31d1cc02.tar.bz2
Support link_whole with custom targets.
Diffstat (limited to 'mesonbuild/build.py')
-rw-r--r--mesonbuild/build.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index 4052beb..13a57e7 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -1070,13 +1070,18 @@ You probably should put it in link_with instead.''')
def link_whole(self, target):
for t in listify(target, unholder=True):
- if not isinstance(t, StaticLibrary):
+ if isinstance(t, CustomTarget):
+ if not t.is_linkable_target():
+ raise InvalidArguments('Custom target {!r} is not linkable.'.format(t))
+ if not t.get_filename().endswith('.a'):
+ raise InvalidArguments('Can only link_whole custom targets that are .a archives.')
+ elif not isinstance(t, StaticLibrary):
raise InvalidArguments('{!r} is not a static library.'.format(t))
if isinstance(self, SharedLibrary) and not t.pic:
msg = "Can't link non-PIC static library {!r} into shared library {!r}. ".format(t.name, self.name)
msg += "Use the 'pic' option to static_library to build with PIC."
raise InvalidArguments(msg)
- if self.is_cross != t.is_cross:
+ if not isinstance(t, CustomTarget) and self.is_cross != t.is_cross:
raise InvalidArguments('Tried to mix cross built and native libraries in target {!r}'.format(self.name))
self.link_whole_targets.append(t)