Use a response file for linker command line arguments #10777
authorMichael Snoyman <michael@snoyman.com>
Wed, 2 Sep 2015 11:31:25 +0000 (13:31 +0200)
committerBen Gamari <ben@smart-cactus.org>
Wed, 2 Sep 2015 11:31:47 +0000 (13:31 +0200)
commit296bc70b5ff6c853f2782e9ec5aa47a52110345e
tree70e2a40c2023aaacc1da1412371c7a2b45c279b1
parentff9432f600ca294fb747b0288dc10659d035d45e
Use a response file for linker command line arguments #10777

On Windows, we're constrained to 32k bytes total for command line
arguments.  When building large projects, this limit can be exceeded.
This patch changes GHC to always use response files for linker
arguments, a feature first used by Microsoft compilers and added to GCC
(over a decade ago).

Alternatives here include:

* Only use this method on Windows systems
* Check the length of the command line arguments and use that to decide
  whether to use this method

I did not pursue either of these, as I believe it would make the patch
more likely to break in less tested situations.

Test Plan:
Confirm that linking still works in general. Ideally: compile a very
large project on Windows with this patch. (I am attempting to do that
myself now, but having trouble getting the Windows build tool chain up
and running.)

Reviewers: goldfire, hvr, rwbarton, austin, thomie, bgamari, Phyx

Reviewed By: thomie, bgamari, Phyx

Subscribers: erikd, awson, #ghc_windows_task_force, thomie

Differential Revision: https://phabricator.haskell.org/D1158

GHC Trac Issues: #8596, #10777
compiler/main/SysTools.hs