blob: d30719536b4ae99bfa73153943402d28ff0efdfd [file] [log] [blame]
# Copyright 2018 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.
assert(is_fuchsia)
import("//build/config/chromecast_build.gni")
import("//build/config/fuchsia/config.gni")
import("//build/config/fuchsia/package.gni")
import("//build/config/sysroot.gni")
blobstore_qcow_path = "$root_out_dir/fvm.blk.qcow2"
template("generate_runner_script") {
_pkg_dir = "$root_out_dir/gen/" + get_label_info(invoker.package_name, "dir")
_manifest_path = "$_pkg_dir/${invoker.package_name}.archive_manifest"
_package_path = "$_pkg_dir/${invoker.package_name}.far"
action(target_name) {
forward_variables_from(invoker,
[
"runner_script",
"target",
"testonly",
])
deps = [
"//build/config/fuchsia:blobstore_extended_qcow2",
"//testing/buildbot/filters:fuchsia_filters",
]
_generated_script = "${invoker.generated_script}"
script = "//build/fuchsia/create_runner_script.py"
outputs = [
_generated_script,
]
data = [
_generated_script,
_manifest_path,
"//build/fuchsia/",
"//build/util/lib/",
"${fuchsia_sdk}/",
]
# Arguments used at build time by the runner script generator.
args = [
"--script-output-path",
rebase_path(_generated_script, root_build_dir, root_out_dir),
]
if (defined(invoker.use_test_server) && invoker.use_test_server) {
args += [ "--enable-test-server" ]
}
# Arguments used at runtime by the test runner.
args += [
"--runner-script",
runner_script,
"--output-directory",
rebase_path(root_build_dir, root_build_dir),
"--target-cpu",
target_cpu,
"--package",
rebase_path(_package_path, root_out_dir, root_build_dir),
"--package-name",
invoker.package_name,
"--package-manifest",
rebase_path(_manifest_path),
]
}
}
# This template is used to generate a runner script for test binaries into the
# build dir for Fuchsia. It's generally used from the "test" template.
template("test_runner_script") {
generate_runner_script(target_name) {
testonly = true
runner_script = "test_runner.py"
generated_script =
"$root_build_dir/bin/run_" + get_label_info(invoker.test_name, "name")
forward_variables_from(invoker, "*")
}
}
# This template is used to generate a runner script for arbitrary executables
# into the build dir for Fuchsia. The executable is specified as a target
# pass to the "exe_target" attribute.
template("fuchsia_executable_runner") {
forward_variables_from(invoker, [ "exe_target" ])
_pkg_target = "${target_name}_pkg"
_gen_runner_target = "${target_name}_runner"
_archive_target = "${target_name}_archive"
_exe_name = get_label_info(exe_target, "name")
# Define the target dependencies as the union of the executable target
# and the invoker's deps.
if (defined(invoker.deps)) {
_combined_deps = invoker.deps + [ exe_target ]
} else {
_combined_deps = [ exe_target ]
}
package(_pkg_target) {
forward_variables_from(invoker, [ "testonly" ])
package_name = _exe_name
sandbox_policy = "//build/config/fuchsia/sandbox_policy"
binary = _exe_name
deps = _combined_deps
}
generate_runner_script(_gen_runner_target) {
forward_variables_from(invoker, [ "testonly" ])
runner_script = "exe_runner.py"
generated_script = "$root_build_dir/bin/run_${_exe_name}"
package_name = _exe_name
}
group(target_name) {
forward_variables_from(invoker, [ "testonly" ])
deps = [
":${_archive_target}",
":${_gen_runner_target}",
":${_pkg_target}",
]
# Disable packaging for Chromecast builds. (https://crbug.com/810069)
if (is_chromecast) {
deps -= [ ":${_pkg_target}" ]
}
}
generate_runner_script(_archive_target) {
forward_variables_from(invoker, [ "testonly" ])
runner_script = "archive_builder.py"
generated_script =
"$root_build_dir/bin/archive_" + get_label_info(exe_target, "name")
package_name = _exe_name
}
}