summaryrefslogtreecommitdiff
path: root/deps/v8/build/config/fuchsia/rules.gni
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/build/config/fuchsia/rules.gni')
-rw-r--r--deps/v8/build/config/fuchsia/rules.gni157
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}" ]
+ }
+ }
+}