# 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 } }