aboutsummaryrefslogtreecommitdiffstats
path: root/cc/builder.go
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2015-03-30 17:47:53 -0700
committerColin Cross <ccross@android.com>2015-04-02 14:48:55 -0700
commit7d21c4430d506e25fb9d99d144e0e2f49d667270 (patch)
treedc0181bfe4f0a7e957a226564b8757fa3436d126 /cc/builder.go
parent577f6e4baf4d01ebcb67c613b6d3f94fc74be8e5 (diff)
downloadbuild_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.go12
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")