diff options
Diffstat (limited to 'deps/v8/build/config/fuchsia/rules.gni')
-rw-r--r-- | deps/v8/build/config/fuchsia/rules.gni | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/deps/v8/build/config/fuchsia/rules.gni b/deps/v8/build/config/fuchsia/rules.gni new file mode 100644 index 0000000000..11cb4f10ad --- /dev/null +++ b/deps/v8/build/config/fuchsia/rules.gni @@ -0,0 +1,157 @@ +# 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") +import("//build/util/generate_wrapper.gni") + +blobstore_qcow_path = "$root_out_dir/fvm.blk.qcow2" + +# Generates a script which deploys and executes a package on a device. +# +# Parameters: +# package: The package() target which will be run. +# package_name_override: Specifies the name of the generated package, if its +# name is different than the |package| target name. This value must match +# package_name_override in the |package| target. +# package_deps: An array of [package, package_name_override] array pairs +# which specify additional dependency packages to be installed +# prior to execution. +# runner_script: The runner script implementation to use, relative to +# "build/fuchsia". Defaults to "exe_runner.py". +# install_only: If true, executing the script will only install the package +# on the device, but not run it. +template("fuchsia_package_runner") { + forward_variables_from(invoker, [ "runner_script" ]) + + if (defined(invoker.package_name_override)) { + _pkg_shortname = invoker.package_name_override + } else { + _pkg_shortname = get_label_info(invoker.package, "name") + } + + _pkg_dir = "$root_out_dir/gen/" + get_label_info(invoker.package, "dir") + + "/" + _pkg_shortname + _manifest_path = "$_pkg_dir/${_pkg_shortname}.archive_manifest" + _package_path = "$_pkg_dir/${_pkg_shortname}.far" + + if (!defined(runner_script)) { + runner_script = "//build/fuchsia/exe_runner.py" + } + + generated_run_pkg_script_path = "$root_build_dir/bin/run_${_pkg_shortname}" + generated_install_pkg_script_path = + "$root_build_dir/bin/install_$_pkg_shortname" + + _generate_runner_target = "${target_name}__generate_runner" + _generate_installer_target = "${target_name}__generate_installer" + _generate_template = "${target_name}__generate_template" + + # Generates a script to install and optionally run a package. + # + # Parameters: + # |install_only|: If true, builds a script that only installs a package. + # |script_path|: The path of the script to generate. + template(_generate_template) { + generate_wrapper(target_name) { + forward_variables_from(invoker, + [ + "install_only", + "script_path", + "target", + "testonly", + ]) + + executable = runner_script + wrapper_script = script_path + + deps = [ + "//build/config/fuchsia:blobstore_extended_qcow2", + invoker.package, + ] + + if (defined(invoker.deps)) { + deps += invoker.deps + } + + data = [ + _manifest_path, + "//build/fuchsia/", + "//build/util/lib/", + "//third_party/llvm-build/Release+Asserts/bin/llvm-symbolizer", + "${qemu_root}/", + "${fuchsia_sdk}/", + ] + + data_deps = [ + invoker.package, + ] + + executable_args = [] + + if (defined(invoker.package_deps)) { + foreach(cur_package, invoker.package_deps) { + deps += [ cur_package[0] ] + dep_package_path = + get_label_info(cur_package[0], "target_gen_dir") + "/" + + cur_package[1] + "/" + cur_package[1] + ".far" + _rebased_dep_package_path = + rebase_path(dep_package_path, root_build_dir) + executable_args += [ + "--package-dep", + "@WrappedPath(${_rebased_dep_package_path})", + ] + } + } + + _rebased_package_path = rebase_path(_package_path, root_build_dir) + executable_args += [ + "--output-directory", + "@WrappedPath(.)", + "--target-cpu", + target_cpu, + "--package", + "@WrappedPath(${_rebased_package_path})", + "--package-name", + _pkg_shortname, + ] + + if (defined(invoker.use_test_server) && invoker.use_test_server) { + executable_args += [ "--enable-test-server" ] + } + + if (defined(install_only) && install_only) { + executable_args += [ "--install-only" ] + } + } + } + + target(_generate_template, _generate_runner_target) { + forward_variables_from(invoker, "*") + script_path = generated_run_pkg_script_path + } + + target(_generate_template, _generate_installer_target) { + forward_variables_from(invoker, "*") + script_path = generated_install_pkg_script_path + install_only = true + } + + # Build the installer script, and the runner for non-|install_only| targets. + group(target_name) { + forward_variables_from(invoker, [ "testonly" ]) + deps = [ + ":${_generate_installer_target}", + ] + + # Generate a runner script if the target is not install-only. + if (!defined(invoker.install_only)) { + deps += [ ":${_generate_runner_target}" ] + } + } +} |