diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2017-07-21 20:06:46 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-21 20:06:46 +0300 |
commit | 979efce04a26287639615d32182dff97582bf6ee (patch) | |
tree | 1cadab7c687a7ed85858812116a5b04bc5a373db /mesonbuild/backend/backends.py | |
parent | 381e8313ed191ae8e440a9ba3805d5322c769ea7 (diff) | |
parent | 887e4d131857bf44eea1566adae9b79c610e3e86 (diff) | |
download | meson-979efce04a26287639615d32182dff97582bf6ee.zip meson-979efce04a26287639615d32182dff97582bf6ee.tar.gz meson-979efce04a26287639615d32182dff97582bf6ee.tar.bz2 |
Merge pull request #1955 from jon-turney/exe-implib
Support implibs for executables on Windows
Diffstat (limited to 'mesonbuild/backend/backends.py')
-rw-r--r-- | mesonbuild/backend/backends.py | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py index cadb655..f967de0 100644 --- a/mesonbuild/backend/backends.py +++ b/mesonbuild/backend/backends.py @@ -140,7 +140,12 @@ 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()) - raise AssertionError('BUG: Tried to link to something that\'s not a library') + elif isinstance(target, build.Executable): + if target.import_filename: + return os.path.join(self.get_target_dir(target), target.get_import_filename()) + else: + return None + raise AssertionError('BUG: Tried to link to {!r} which is not linkable'.format(target)) def get_target_dir(self, target): if self.environment.coredata.get_builtin_option('layout') == 'mirror': @@ -463,12 +468,13 @@ class Backend: def build_target_link_arguments(self, compiler, deps): args = [] for d in deps: - if not isinstance(d, (build.StaticLibrary, build.SharedLibrary)): + if not (d.is_linkable_target()): raise RuntimeError('Tried to link with a non-library target "%s".' % d.get_basename()) + d_arg = self.get_target_filename_for_linking(d) + if not d_arg: + continue if isinstance(compiler, (compilers.LLVMDCompiler, compilers.DmdDCompiler)): - d_arg = '-L' + self.get_target_filename_for_linking(d) - else: - d_arg = self.get_target_filename_for_linking(d) + d_arg = '-L' + d_arg args.append(d_arg) return args |