summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Adam Lesinski <adamlesinski@google.com> 2016-06-24 14:57:58 -0700
committer Adam Lesinski <adamlesinski@google.com> 2016-06-24 14:57:58 -0700
commit1e21ff00b005110128245a4b0d13a7513a2d5e0c (patch)
treed346491f40cad44f33b748a46e7220964fc84e05
parent97b561449418327e86fce49102ea5cfca9fb0867 (diff)
AAPT2: accept argument file list for -R
Bug:29462255 Change-Id: Ia83919a3e7de7fe2056a3f7613621972cccd49cb
-rw-r--r--tools/aapt2/link/Link.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/tools/aapt2/link/Link.cpp b/tools/aapt2/link/Link.cpp
index a4fa7e0c43e4..4767bc99141d 100644
--- a/tools/aapt2/link/Link.cpp
+++ b/tools/aapt2/link/Link.cpp
@@ -1389,6 +1389,7 @@ private:
int link(const std::vector<StringPiece>& args) {
LinkContext context;
LinkOptions options;
+ std::vector<std::string> overlayArgList;
Maybe<std::string> privateSymbolsPackage;
Maybe<std::string> minSdkVersion, targetSdkVersion;
Maybe<std::string> renameManifestPackage, renameInstrumentationTargetPackage;
@@ -1408,7 +1409,7 @@ int link(const std::vector<StringPiece>& args) {
.optionalFlagList("-I", "Adds an Android APK to link against", &options.includePaths)
.optionalFlagList("-R", "Compilation unit to link, using `overlay` semantics.\n"
"The last conflicting resource given takes precedence.",
- &options.overlayFiles)
+ &overlayArgList)
.optionalFlag("--java", "Directory in which to generate R.java",
&options.generateJavaClassPath)
.optionalFlag("--proguard", "Output file for generated Proguard rules",
@@ -1493,6 +1494,20 @@ int link(const std::vector<StringPiece>& args) {
}
}
+ // Expand all argument-files passed to -R.
+ for (const std::string& arg : overlayArgList) {
+ if (util::stringStartsWith<char>(arg, "@")) {
+ const std::string path = arg.substr(1, arg.size() - 1);
+ std::string error;
+ if (!file::appendArgsFromFile(path, &options.overlayFiles, &error)) {
+ context.getDiagnostics()->error(DiagMessage(path) << error);
+ return 1;
+ }
+ } else {
+ options.overlayFiles.push_back(arg);
+ }
+ }
+
if (verbose) {
context.setVerbose(verbose);
}