95 lines
3.5 KiB
Plaintext
95 lines
3.5 KiB
Plaintext
# Copyright 2019 The Chromium Authors
|
|
# 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")
|
|
}
|