diff options
author | Colin Cross <ccross@android.com> | 2015-03-30 17:47:53 -0700 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2015-04-02 14:48:55 -0700 |
commit | 7d21c4430d506e25fb9d99d144e0e2f49d667270 (patch) | |
tree | dc0181bfe4f0a7e957a226564b8757fa3436d126 /cc/builder.go | |
parent | 577f6e4baf4d01ebcb67c613b6d3f94fc74be8e5 (diff) | |
download | build_soong-7d21c4430d506e25fb9d99d144e0e2f49d667270.tar.gz build_soong-7d21c4430d506e25fb9d99d144e0e2f49d667270.tar.bz2 build_soong-7d21c4430d506e25fb9d99d144e0e2f49d667270.zip |
Use @files for ld and ar
ld and ar command lines often end up larger than ARG_MAX, use Ninja's
rsp file support to automatically write the object files to a temporary
file and pass it in using @file support.
This isn't going to work on Darwin host builds, where the host
toolchains don't support @.
Change-Id: Ida2f4e114ab02df6967e863577fa324e197827d5
Diffstat (limited to 'cc/builder.go')
-rw-r--r-- | cc/builder.go | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/cc/builder.go b/cc/builder.go index c843c2d6..cb2bf9ac 100644 --- a/cc/builder.go +++ b/cc/builder.go @@ -47,9 +47,11 @@ var ( ld = pctx.StaticRule("ld", blueprint.RuleParams{ - Command: "$ldCmd ${ldDirFlags} ${crtBegin} ${in} " + + Command: "$ldCmd ${ldDirFlags} ${crtBegin} @${out}.rsp " + "${libFlags} ${crtEnd} -o ${out} ${ldFlags} ${ldLibs}", - Description: "ld $out", + Description: "ld $out", + Rspfile: "${out}.rsp", + RspfileContent: "${in}", }, "ldCmd", "ldDirFlags", "crtBegin", "libFlags", "crtEnd", "ldFlags", "ldLibs") @@ -62,8 +64,10 @@ var ( ar = pctx.StaticRule("ar", blueprint.RuleParams{ - Command: "rm -f ${out} && $arCmd $arFlags $out $in", - Description: "ar $out", + Command: "rm -f ${out} && $arCmd $arFlags $out @${out}.rsp", + Description: "ar $out", + Rspfile: "${out}.rsp", + RspfileContent: "${in}", }, "arCmd", "arFlags") |