summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/build/android/gyp/unused_resources.py
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/libwebrtc/build/android/gyp/unused_resources.py')
-rwxr-xr-xthird_party/libwebrtc/build/android/gyp/unused_resources.py89
1 files changed, 89 insertions, 0 deletions
diff --git a/third_party/libwebrtc/build/android/gyp/unused_resources.py b/third_party/libwebrtc/build/android/gyp/unused_resources.py
new file mode 100755
index 0000000000..cdaf4cf5b1
--- /dev/null
+++ b/third_party/libwebrtc/build/android/gyp/unused_resources.py
@@ -0,0 +1,89 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+# Copyright (c) 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import argparse
+import os
+import sys
+
+sys.path.insert(
+ 0, os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir)))
+from util import build_utils
+from util import resource_utils
+
+
+def main(args):
+ parser = argparse.ArgumentParser()
+
+ build_utils.AddDepfileOption(parser)
+ parser.add_argument('--script',
+ required=True,
+ help='Path to the unused resources detector script.')
+ parser.add_argument(
+ '--dependencies-res-zips',
+ required=True,
+ action='append',
+ help='Resources zip archives to investigate for unused resources.')
+ parser.add_argument('--dexes',
+ action='append',
+ required=True,
+ help='Path to dex file, or zip with dex files.')
+ parser.add_argument(
+ '--proguard-mapping',
+ help='Path to proguard mapping file for the optimized dex.')
+ parser.add_argument('--r-text', required=True, help='Path to R.txt')
+ parser.add_argument('--android-manifests',
+ action='append',
+ required=True,
+ help='Path to AndroidManifest')
+ parser.add_argument('--output-config',
+ required=True,
+ help='Path to output the aapt2 config to.')
+ args = build_utils.ExpandFileArgs(args)
+ options = parser.parse_args(args)
+ options.dependencies_res_zips = (build_utils.ParseGnList(
+ options.dependencies_res_zips))
+
+ # in case of no resources, short circuit early.
+ if not options.dependencies_res_zips:
+ build_utils.Touch(options.output_config)
+ return
+
+ with build_utils.TempDir() as temp_dir:
+ dep_subdirs = []
+ for dependency_res_zip in options.dependencies_res_zips:
+ dep_subdirs += resource_utils.ExtractDeps([dependency_res_zip], temp_dir)
+
+ cmd = [
+ options.script,
+ '--rtxts',
+ options.r_text,
+ '--manifests',
+ ':'.join(options.android_manifests),
+ '--resourceDirs',
+ ':'.join(dep_subdirs),
+ '--dexes',
+ ':'.join(options.dexes),
+ '--outputConfig',
+ options.output_config,
+ ]
+ if options.proguard_mapping:
+ cmd += [
+ '--mapping',
+ options.proguard_mapping,
+ ]
+ build_utils.CheckOutput(cmd)
+
+ if options.depfile:
+ depfile_deps = (options.dependencies_res_zips + options.android_manifests +
+ options.dexes) + [options.r_text]
+ if options.proguard_mapping:
+ depfile_deps.append(options.proguard_mapping)
+ build_utils.WriteDepfile(options.depfile, options.output_config,
+ depfile_deps)
+
+
+if __name__ == '__main__':
+ main(sys.argv[1:])