AAPT2: accept argument file list for -R

Bug:29462255
Change-Id: Ia83919a3e7de7fe2056a3f7613621972cccd49cb
This commit is contained in:
Adam Lesinski
2016-06-24 14:57:58 -07:00
parent 97b5614494
commit 1e21ff00b0

View File

@ -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);
}