diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2017-04-02 19:06:16 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2017-04-08 22:14:09 +0300 |
commit | d152c1b5d549769c7977688fbb8c4cde037192e7 (patch) | |
tree | 0503da8250ec18a3e3f7787fc8bc2c9e038c2d58 /mesonbuild/backend/ninjabackend.py | |
parent | 79208fd9c4e6c865f4ef12ce992d5e3d8c7f4ad4 (diff) | |
download | meson-d152c1b5d549769c7977688fbb8c4cde037192e7.zip meson-d152c1b5d549769c7977688fbb8c4cde037192e7.tar.gz meson-d152c1b5d549769c7977688fbb8c4cde037192e7.tar.bz2 |
Add option to link the entire contents of a static library to a target.
Diffstat (limited to 'mesonbuild/backend/ninjabackend.py')
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 5a9462f..4bfddc2 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -2126,6 +2126,10 @@ rule FORTRAN_DEP_HACK raise RuntimeError('Unknown build target type.') return commands + def get_link_whole_args(self, linker, target): + target_args = self.build_target_link_arguments(linker, target.link_whole_targets) + return linker.get_link_whole_for(target_args) + def generate_link(self, target, outfile, outname, obj_list, linker, extra_args=[]): if isinstance(target, build.StaticLibrary): linker_base = 'STATIC' @@ -2165,6 +2169,11 @@ rule FORTRAN_DEP_HACK # Add link args specific to this BuildTarget type, such as soname args, # PIC, import library generation, etc. commands += self.get_target_type_link_args(target, linker) + # Archives that are copied wholesale in the result. Must be before any + # other link targets so missing symbols from whole archives are found in those. + if not isinstance(target, build.StaticLibrary): + commands += self.get_link_whole_args(linker, target) + if not isinstance(target, build.StaticLibrary): # Add link args added using add_project_link_arguments() commands += self.build.get_project_link_args(linker, target.subproject) |