| # Copyright 2021 The Fuchsia 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/packages/prebuilt_package_with_flavors.gni") |
| import("//src/chromium/build_args.gni") |
| |
| # Generates a `prebuilt_package_with_flavors` target, which allows choosing a |
| # specific flavor of the target to use in the build. |
| # |
| # Parameters |
| # |
| # available_flavors (required) |
| # Must be set if and only if `default_flavor` is set. |
| # A `"custom"` flavor corresponding to `custom_package_path` is appended. |
| # See `flavors` in the `prebuilt_package_with_flavors()` documentation. |
| # |
| # default_flavor (required; string) |
| # The name of the default flavor in available_flavors to use if not overridden. |
| # Must be set if and only if `flavors` is set. |
| # See `default` in the `prebuilt_package_with_flavors()` documentation. |
| # |
| # custom_package_path (required) |
| # [path]: The path to the package inside a custom chromium build output directory. |
| # |
| # repository (required; string) |
| # The repository host name part of the package URL. |
| # See https://fuchsia.dev/fuchsia-src/concepts/packages/package_url#repository |
| # for more details. |
| # |
| # selections (optional; list) |
| # Flavor choice. This allows flavor to be changed based on other build args. See |
| # //build/packages/prebuilt_package_with_flavors.gni |
| # |
| # deps (optional) |
| # testonly (optional) |
| # visibility (optional) |
| # Usual GN meanings. |
| # |
| template("generate_package_flavors") { |
| assert(defined(invoker.available_flavors), |
| "The available flavors must be specified") |
| assert(defined(invoker.default_flavor), |
| "The default flavor must be specified") |
| assert(defined(invoker.custom_package_path), |
| "A custom package path must be specified") |
| assert(defined(invoker.repository), "The Repository must be specified") |
| assert(!defined(invoker.package_name), |
| "Custom package names are not supported") |
| |
| _base_target_name = target_name |
| prebuilt_package_with_flavors("${target_name}_pkg") { |
| forward_variables_from(invoker, |
| [ |
| "deps", |
| "repository", |
| "selections", |
| "testonly", |
| "visibility", |
| ]) |
| if (!defined(visibility)) { |
| visibility = [] |
| } |
| visibility += [ ":${invoker.target_name}" ] |
| |
| # Override the default behavior, which would include "_pkg". |
| package_name = _base_target_name |
| |
| default = invoker.default_flavor |
| flavors = invoker.available_flavors |
| flavors += [ |
| { |
| name = "custom" |
| archive = "${invoker.chromium_build_dir}${invoker.custom_package_path}" |
| |
| # Custom builds are never production-safe. |
| production_safe = false |
| }, |
| ] |
| } |
| } |
| |
| # Generates a prebuilt_package_with_flavors target for packages related to the |
| # fuchsia.web` FIDL Protocol. |
| # |
| # Parameters |
| # |
| # prebuilt_archive_base_path (required) |
| # [path]: Base path for the prebuilt archive. |
| # |
| # See the `generate_package_flavors` template for documentation of other |
| # parameters. |
| template("generate_fuchsia_web_package_flavors") { |
| assert(defined(invoker.prebuilt_archive_base_path), |
| "A prebuilt archive base path must be specified") |
| |
| generate_package_flavors("${target_name}") { |
| forward_variables_from(invoker, |
| [ |
| "custom_package_path", |
| "deps", |
| "repository", |
| "testonly", |
| "visibility", |
| ]) |
| |
| default_flavor = "canary" |
| |
| available_flavors = [ |
| { |
| name = "canary" |
| archive = "${invoker.prebuilt_archive_base_path}/arch/$target_cpu/${target_name}.far" |
| |
| # TODO(https://fxbug.dev/42149832): Add support for overriding this. |
| production_safe = false |
| }, |
| ] |
| |
| # Always use the custom build when the GN arg is specified. |
| if (chromium_build_dir != "") { |
| print("Using ${target_name} prebuilts from ", chromium_build_dir) |
| selections = [ |
| { |
| name = target_name |
| flavor = "custom" |
| }, |
| ] |
| } |
| } |
| } |