diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2019-03-28 22:56:37 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2019-03-28 22:56:37 +0200 |
commit | 3196e4e141029aae0b800e7c39f6b3ed31d1cc02 (patch) | |
tree | 99aa0a9e2eb51e0214aab34c74754023b8d424ef /mesonbuild/build.py | |
parent | fd624a848e4f77b60c5859363e3c22052e779d3b (diff) | |
download | meson-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.py | 9 |
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) |