From d784b5772a55eadb88034bd1992adeaddfba28d0 Mon Sep 17 00:00:00 2001 From: Mathieu Duponchelle Date: Sat, 23 Jun 2018 03:53:05 +0200 Subject: [PATCH] ArLinker: Use response files on Windows ninja chokes when building FFmpeg's static libraries, as the command line can be larger than 32000. This was disabled on purpose in #1649, but the rsp syntax was different: this commit makes it so the options and output file are still passed on the command line, gcc-ar didn't work otherwise. --- mesonbuild/backend/ninjabackend.py | 8 ++------ mesonbuild/linkers.py | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 847e74920..94eaa4ff8 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -1526,14 +1526,10 @@ int dummy; if static_linker is None: return rule = 'rule STATIC%s_LINKER\n' % crstr - # We don't use @file.rsp on Windows with ArLinker because llvm-ar and - # gcc-ar blindly pass the --plugin argument to `ar` and you cannot pass - # options as arguments while using the @file.rsp syntax. - # See: https://github.com/mesonbuild/meson/issues/1646 if static_linker.can_linker_accept_rsp(): - command_template = ''' command = {executable} @$out.rsp + command_template = ''' command = {executable} $LINK_ARGS {output_args} @$out.rsp rspfile = $out.rsp - rspfile_content = $LINK_ARGS {output_args} $in + rspfile_content = $in ''' else: command_template = ' command = {executable} $LINK_ARGS {output_args} $in\n' diff --git a/mesonbuild/linkers.py b/mesonbuild/linkers.py index cb07c5e46..7e89de59b 100644 --- a/mesonbuild/linkers.py +++ b/mesonbuild/linkers.py @@ -88,7 +88,7 @@ class ArLinker(StaticLinker): self.std_args = ['-csr'] def can_linker_accept_rsp(self): - return False + return mesonlib.is_windows() def build_rpath_args(self, build_dir, from_dir, rpath_paths, build_rpath, install_rpath): return []