summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/build/config/fuchsia/package.gni
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/libwebrtc/build/config/fuchsia/package.gni')
-rw-r--r--third_party/libwebrtc/build/config/fuchsia/package.gni114
1 files changed, 114 insertions, 0 deletions
diff --git a/third_party/libwebrtc/build/config/fuchsia/package.gni b/third_party/libwebrtc/build/config/fuchsia/package.gni
new file mode 100644
index 0000000000..ff6ffd0a3d
--- /dev/null
+++ b/third_party/libwebrtc/build/config/fuchsia/package.gni
@@ -0,0 +1,114 @@
+# 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("//third_party/fuchsia-sdk/sdk/build/component.gni")
+import("//third_party/fuchsia-sdk/sdk/build/package.gni")
+
+# DEPRECATED: Use the Fuchsia SDK's fuchsia_component() and fuchsia_package()
+# templates directly, in new code.
+#
+# Creates a Fuchsia .far package file containing a Fuchsia component.
+#
+# 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.
+# manifest: A path to the manifest that will be used.
+# "testonly" targets default to using
+# //build/config/fuchsia/tests-with-exec.cmx.
+# Non-test targets must explicitly specify a |manifest|.
+# additional_manifests: Manifest files that should be included in the package in
+# the /meta directory. This allows to package more than one component per
+# manifest. These manifest files must specify program/binary to run, which
+# is not required for the main manifest file where this parameter is added
+# during build.
+# component_name_override: If set, specifies the name of the component.
+# By default, the component name is the same as the package name.
+# deps: Additional targets to build and include in the package (optional).
+#
+# TODO(https://crbug.com/1050703): Migrate consumers to GN SDK equivalents.
+template("cr_fuchsia_package") {
+ assert(defined(invoker.binary))
+
+ if (defined(invoker.package_name_override)) {
+ _package_name = invoker.package_name_override
+ } else {
+ _package_name = invoker.target_name
+ }
+
+ _package_contents = [ invoker.binary ]
+ if (defined(invoker.deps)) {
+ _package_contents += invoker.deps
+ }
+
+ _component_cmx_target = target_name + "__cr-component-cmx"
+ _component_target = target_name + "__cr-component"
+ _package_components = [ ":${_component_target}" ]
+ _component_manifest = "${target_gen_dir}/${target_name}.cmx"
+
+ # Process the CMX fragment in |manifest| to get a full manifest.
+ action(_component_cmx_target) {
+ forward_variables_from(invoker,
+ [
+ "deps",
+ "testonly",
+ ])
+
+ script = "//build/config/fuchsia/build_cmx_from_fragment.py"
+
+ inputs = [ invoker.manifest ]
+ outputs = [ _component_manifest ]
+
+ args = [
+ "--cmx-fragment",
+ rebase_path(invoker.manifest),
+ "--cmx",
+ rebase_path(_component_manifest),
+ "--program",
+ get_label_info(invoker.binary, "name"),
+ ]
+ }
+
+ # Declare the primary component for this package.
+ fuchsia_component(_component_target) {
+ forward_variables_from(invoker, [ "testonly" ])
+
+ deps = [ ":${_component_cmx_target}" ]
+ data_deps = _package_contents
+ manifest = _component_manifest
+
+ if (defined(invoker.component_name_override)) {
+ manifest_output_name = "${invoker.component_name_override}"
+ } else {
+ manifest_output_name = "${_package_name}"
+ }
+ }
+
+ # Bundle manifests providing additional entrypoints into the package.
+ if (defined(invoker.additional_manifests)) {
+ foreach(filename, invoker.additional_manifests) {
+ _additional_component_target =
+ target_name + "_" + get_path_info(filename, "name")
+ _package_components += [ ":${_additional_component_target}" ]
+ fuchsia_component(_additional_component_target) {
+ forward_variables_from(invoker, [ "testonly" ])
+ data_deps = _package_contents
+ manifest = filename
+
+ # Depend upon the invoker's |deps|, in case they include a dependency
+ # responsible for generating this additional component's manifest file.
+ deps = _package_contents
+ }
+ }
+ }
+
+ fuchsia_package(target_name) {
+ forward_variables_from(invoker, [ "testonly" ])
+ package_name = _package_name
+ if (defined(invoker.excluded_files)) {
+ excluded_files = invoker.excluded_files
+ }
+ deps = _package_components
+ }
+}