Source code
Revision control
Copy as Markdown
Other Tools
# 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("//chromium/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 = "//chromium/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 = [ "//chromium/build/android:resource_sizes_py" ]
executable_args = [
"--output-format",
"histograms",
"--chromium-output-directory",
"@WrappedPath(.)",
]
data = [
"//.vpython",
"//.vpython3",
]
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".
#
# Variables:
# name: The name of the path to the generated size config JSON file.
# mapping_files: List of mapping files.
# to_resource_sizes_py: Scope containing data to pass to resource_sizes.py,
# processed by generate_commit_size_analysis.py.
# supersize_input_file: Main input for SuperSize.
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,
[
"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")
}