From: Adam Lesinski Date: Tue, 4 Apr 2017 02:38:25 +0000 (-0700) Subject: AAPT2: Allow multiple -c flags X-Git-Tag: android-x86-9.0-r1~1044^2~2316^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=113ee097386380daa8f01d74916504a9a1338a63;p=android-x86%2Fframeworks-base.git AAPT2: Allow multiple -c flags AAPT allows multiple -c flags in addition to separating -c arguments with commas. Bug: 35671619 Test: manual Change-Id: I90491968e8ea2b28e3cd6e9246bcdd62bd6d6a3c --- diff --git a/tools/aapt2/link/Link.cpp b/tools/aapt2/link/Link.cpp index 7f715895e282..a33fd0673d98 100644 --- a/tools/aapt2/link/Link.cpp +++ b/tools/aapt2/link/Link.cpp @@ -1913,7 +1913,7 @@ int Link(const std::vector& args) { std::vector overlay_arg_list; std::vector extra_java_packages; Maybe package_id; - Maybe configs; + std::vector configs; Maybe preferred_density; Maybe product_list; bool legacy_x_flag = false; @@ -1971,7 +1971,7 @@ int Link(const std::vector& args) { &legacy_x_flag) .OptionalSwitch("-z", "Require localization of strings marked 'suggested'", &require_localization) - .OptionalFlag("-c", + .OptionalFlagList("-c", "Comma separated list of configurations to include. The default\n" "is all configurations", &configs) @@ -2151,28 +2151,29 @@ int Link(const std::vector& args) { } AxisConfigFilter filter; - if (configs) { - for (const StringPiece& config_str : util::Tokenize(configs.value(), ',')) { - ConfigDescription config; - LocaleValue lv; - if (lv.InitFromFilterString(config_str)) { - lv.WriteTo(&config); - } else if (!ConfigDescription::Parse(config_str, &config)) { - context.GetDiagnostics()->Error(DiagMessage() << "invalid config '" - << config_str - << "' for -c option"); - return 1; - } + if (configs.empty()) { + for (const std::string& config_arg : configs) { + for (const StringPiece& config_str : util::Tokenize(config_arg, ',')) { + ConfigDescription config; + LocaleValue lv; + if (lv.InitFromFilterString(config_str)) { + lv.WriteTo(&config); + } else if (!ConfigDescription::Parse(config_str, &config)) { + context.GetDiagnostics()->Error(DiagMessage() << "invalid config '" + << config_str + << "' for -c option"); + return 1; + } - if (config.density != 0) { - context.GetDiagnostics()->Warn(DiagMessage() << "ignoring density '" - << config - << "' for -c option"); - } else { - filter.AddConfig(config); + if (config.density != 0) { + context.GetDiagnostics()->Warn(DiagMessage() << "ignoring density '" + << config + << "' for -c option"); + } else { + filter.AddConfig(config); + } } } - options.table_splitter_options.config_filter = &filter; }