mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-28 08:16:09 +03:00
207 lines
5.2 KiB
Plaintext
207 lines
5.2 KiB
Plaintext
|
# 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.
|
||
|
|
||
|
import("//build/config/fuchsia/config.gni")
|
||
|
import("//build/config/sysroot.gni")
|
||
|
|
||
|
# Creates a Fuchsia .far package file.
|
||
|
#
|
||
|
# Parameters are:
|
||
|
# package_name_override: Specifies the name of the package to generate,
|
||
|
# if different than |target_name|.
|
||
|
# binary: The executable target which should be launched.
|
||
|
# sandbox_policy: A path to the sandbox_policy that will be used.
|
||
|
# Defaults to //build/config/fuchsia/sandbox_policy.
|
||
|
# deps: Additional targets to build and include in the package (optional).
|
||
|
template("fuchsia_package") {
|
||
|
pkg = {
|
||
|
forward_variables_from(invoker, "*")
|
||
|
|
||
|
if (defined(package_name_override)) {
|
||
|
package_name = package_name_override
|
||
|
} else {
|
||
|
package_name = invoker.target_name
|
||
|
}
|
||
|
|
||
|
if (!defined(sandbox_policy)) {
|
||
|
sandbox_policy = "//build/config/fuchsia/sandbox_policy"
|
||
|
}
|
||
|
}
|
||
|
assert(defined(pkg.binary))
|
||
|
|
||
|
_pm_tool_path = "${fuchsia_sdk}/tools/pm"
|
||
|
|
||
|
_pkg_out_dir = "$root_out_dir/gen/" + get_label_info(pkg.package_name, "dir")
|
||
|
_runtime_deps_file = "$_pkg_out_dir/${pkg.package_name}.runtime_deps"
|
||
|
_archive_manifest = "$_pkg_out_dir/${pkg.package_name}.archive_manifest"
|
||
|
_component_manifest = "$_pkg_out_dir/${pkg.package_name}.cmx"
|
||
|
_key_file = "$_pkg_out_dir/signing-key"
|
||
|
_meta_far_file = "$_pkg_out_dir/meta.far"
|
||
|
_combined_far_file = "$_pkg_out_dir/${pkg.package_name}-0.far"
|
||
|
_final_far_file = "$_pkg_out_dir/${pkg.package_name}.far"
|
||
|
|
||
|
_write_manifest_target = "${pkg.package_name}__write_manifest"
|
||
|
_generate_key_target = "${pkg.package_name}__genkey"
|
||
|
_package_target = "${pkg.package_name}__pkg"
|
||
|
_bundle_target = "${pkg.package_name}__bundle"
|
||
|
|
||
|
# Generates a manifest file based on the GN runtime deps
|
||
|
# suitable for "pm" tool consumption.
|
||
|
action(_write_manifest_target) {
|
||
|
_depfile = "${target_gen_dir}/${target_name}_stamp.d"
|
||
|
|
||
|
forward_variables_from(invoker,
|
||
|
[
|
||
|
"deps",
|
||
|
"testonly",
|
||
|
])
|
||
|
|
||
|
script = "//build/config/fuchsia/build_manifest.py"
|
||
|
|
||
|
inputs = [
|
||
|
_runtime_deps_file,
|
||
|
pkg.sandbox_policy,
|
||
|
]
|
||
|
|
||
|
outputs = [
|
||
|
_archive_manifest,
|
||
|
_component_manifest,
|
||
|
]
|
||
|
|
||
|
if (!defined(deps)) {
|
||
|
deps = []
|
||
|
}
|
||
|
deps += [ pkg.binary ]
|
||
|
data_deps = deps
|
||
|
|
||
|
# Use a depfile to trigger package rebuilds if any of the files (static
|
||
|
# assets, shared libraries, etc.) included by the package have changed.
|
||
|
depfile = _depfile
|
||
|
|
||
|
args = [
|
||
|
rebase_path("//"),
|
||
|
rebase_path(root_out_dir),
|
||
|
pkg.package_name,
|
||
|
get_label_info(pkg.binary, "name"),
|
||
|
rebase_path(pkg.sandbox_policy),
|
||
|
rebase_path(_runtime_deps_file),
|
||
|
rebase_path(_depfile),
|
||
|
rebase_path(dist_libroot) + "," + rebase_path("${sysroot}/dist"),
|
||
|
rebase_path(_archive_manifest),
|
||
|
]
|
||
|
|
||
|
write_runtime_deps = _runtime_deps_file
|
||
|
}
|
||
|
|
||
|
# Generates a signing key to use for building the package.
|
||
|
action(_generate_key_target) {
|
||
|
forward_variables_from(invoker, [ "testonly" ])
|
||
|
|
||
|
script = "//build/gn_run_binary.py"
|
||
|
|
||
|
inputs = [
|
||
|
# Depend on the SDK hash, to ensure rebuild if the SDK tools change.
|
||
|
rebase_path("$fuchsia_sdk/.hash"),
|
||
|
]
|
||
|
|
||
|
outputs = [
|
||
|
_key_file,
|
||
|
]
|
||
|
|
||
|
args = [
|
||
|
rebase_path(_pm_tool_path, root_build_dir),
|
||
|
"-k",
|
||
|
rebase_path(_key_file),
|
||
|
"genkey",
|
||
|
]
|
||
|
}
|
||
|
|
||
|
# Creates a signed Fuchsia metadata package.
|
||
|
action(_package_target) {
|
||
|
forward_variables_from(invoker, [ "testonly" ])
|
||
|
|
||
|
script = "//build/gn_run_binary.py"
|
||
|
|
||
|
deps = [
|
||
|
":$_generate_key_target",
|
||
|
":$_write_manifest_target",
|
||
|
]
|
||
|
|
||
|
inputs = [
|
||
|
# Depend on the SDK hash, to ensure rebuild if the SDK tools change.
|
||
|
rebase_path("$fuchsia_sdk/.hash"),
|
||
|
_key_file,
|
||
|
]
|
||
|
|
||
|
outputs = [
|
||
|
_meta_far_file,
|
||
|
]
|
||
|
|
||
|
args = [
|
||
|
rebase_path(_pm_tool_path, root_build_dir),
|
||
|
"-o",
|
||
|
rebase_path(_pkg_out_dir),
|
||
|
"-k",
|
||
|
rebase_path(_key_file),
|
||
|
"-m",
|
||
|
rebase_path(_archive_manifest),
|
||
|
"build",
|
||
|
]
|
||
|
}
|
||
|
|
||
|
# Creates a package containing the metadata archive and blob data.
|
||
|
action(_bundle_target) {
|
||
|
forward_variables_from(invoker, [ "testonly" ])
|
||
|
|
||
|
script = "//build/gn_run_binary.py"
|
||
|
|
||
|
deps = [
|
||
|
":$_package_target",
|
||
|
":$_write_manifest_target",
|
||
|
]
|
||
|
|
||
|
inputs = [
|
||
|
# Depend on the SDK hash, to ensure rebuild if the SDK tools change.
|
||
|
rebase_path("$fuchsia_sdk/.hash"),
|
||
|
_meta_far_file,
|
||
|
_archive_manifest,
|
||
|
]
|
||
|
|
||
|
outputs = [
|
||
|
_combined_far_file,
|
||
|
]
|
||
|
|
||
|
args = [
|
||
|
rebase_path(_pm_tool_path, root_build_dir),
|
||
|
"-o",
|
||
|
rebase_path(_pkg_out_dir),
|
||
|
"-m",
|
||
|
rebase_path(_archive_manifest),
|
||
|
"archive",
|
||
|
]
|
||
|
}
|
||
|
|
||
|
# Copies the archive to a well-known path.
|
||
|
# TODO(kmarshall): Use a 'pm' output flag to write directly to the desired
|
||
|
# file path instead.
|
||
|
copy(target_name) {
|
||
|
forward_variables_from(invoker, [ "testonly" ])
|
||
|
|
||
|
deps = [
|
||
|
":$_bundle_target",
|
||
|
]
|
||
|
|
||
|
data = [
|
||
|
_final_far_file,
|
||
|
]
|
||
|
|
||
|
sources = [
|
||
|
_combined_far_file,
|
||
|
]
|
||
|
outputs = [
|
||
|
_final_far_file,
|
||
|
]
|
||
|
}
|
||
|
}
|