12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- # Copyright 2019 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("//build/config/android/internal_rules.gni")
- # Generates a script in the bin directory that runs
- # //build/android/resource_sizes.py against the provided apk.
- #
- # Only one of apk_name or file_path should be provided.
- #
- # Variables:
- # apk_name: The name of the apk, without the extension.
- # file_path: The path to the apk or .minimal.apks.
- # trichrome_chrome_path: The path to chrome apk or .minimal.apks.
- # trichrome_webview_path: The path to webview apk or .minimal.apks.
- # trichrome_library_path: The path to library apk or .minimal.apks.
- template("android_resource_sizes_test") {
- generate_android_wrapper(target_name) {
- forward_variables_from(invoker, [ "data_deps" ])
- executable = "//build/android/resource_sizes.py"
- wrapper_script = "$root_out_dir/bin/run_${target_name}"
- assert(defined(invoker.apk_name) != defined(invoker.file_path),
- "Exactly one of apk_name or file_path should be provided.")
- deps = [ "//build/android:resource_sizes_py" ]
- executable_args = [
- "--output-format",
- "histograms",
- "--chromium-output-directory",
- "@WrappedPath(.)",
- ]
- data = []
- if (defined(invoker.trichrome_chrome_path)) {
- data += [
- invoker.trichrome_chrome_path,
- invoker.trichrome_webview_path,
- invoker.trichrome_library_path,
- ]
- _rebased_chrome =
- rebase_path(invoker.trichrome_chrome_path, root_build_dir)
- _rebased_webview =
- rebase_path(invoker.trichrome_webview_path, root_build_dir)
- _rebased_library =
- rebase_path(invoker.trichrome_library_path, root_build_dir)
- # apk_name used only as test suite name. Not a path in this case.
- executable_args += [
- "--trichrome-chrome",
- "@WrappedPath(${_rebased_chrome})",
- "--trichrome-webview",
- "@WrappedPath(${_rebased_webview})",
- "--trichrome-library",
- "@WrappedPath(${_rebased_library})",
- "${invoker.apk_name}",
- ]
- } else {
- if (defined(invoker.apk_name)) {
- _file_path = "$root_out_dir/apks/${invoker.apk_name}.apk"
- data += [ "$root_out_dir/arsc/apks/${invoker.apk_name}.ap_" ]
- } else if (defined(invoker.file_path)) {
- _file_path = invoker.file_path
- }
- data += [ _file_path ]
- _rebased_file_path = rebase_path(_file_path, root_build_dir)
- executable_args += [ "@WrappedPath(${_rebased_file_path})" ]
- }
- }
- }
- # Generates a "size config JSON file" to specify data to be passed from recipes
- # to Python scripts for binary size measurement on bots. All filenames are
- # relative to $root_build_dir. The resulting JSON file is written to
- # "$root_build_dir/config/${invoker.name}_size_config.json".
- #
- # Refer to tools/binary_size/generate_commit_size_analysis.py for JSON schema.
- #
- template("android_size_bot_config") {
- _full_target_name = get_label_info(target_name, "label_no_toolchain")
- _out_json = {
- _HEADER = "Written by build target '${_full_target_name}'"
- forward_variables_from(invoker,
- [
- "archive_files",
- "mapping_files",
- "to_resource_sizes_py",
- "supersize_input_file",
- ])
- }
- _output_json_path = "$root_build_dir/config/${invoker.name}_size_config.json"
- write_file(_output_json_path, _out_json, "json")
- }
|