| # Copyright 2013 The Flutter 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/package.gni") |
| import("//build/tools/json_merge/json_merge.gni") |
| import("//third_party/dart/build/dart/dart_action.gni") |
| import("//topaz/runtime/dart/config.gni") |
| import("//topaz/runtime/dart/dart_component.gni") |
| import("//topaz/runtime/dart/dart_kernel.gni") |
| |
| # Defines JIT runtime components to be further distributed in one package. |
| # |
| # Takes a set of flutter components and puts them into one fuchsia package with |
| # the flutter_jit_runner as its runtime. Also supports legacy calls where the |
| # components parameter isn't specified, in which we will create one default |
| # component for the package. |
| # |
| # Parameters |
| # |
| # components (required) |
| # [list of scopes] Defines the components in the package. Either main_dart |
| # or components must be defined, but not both. |
| # |
| # Entries in a scope in the resources list: |
| # |
| # component_name (required) |
| # Name of the component. |
| # |
| # main_dart (required) |
| # File containing the main function of the component. |
| # |
| # dart_package_name (optional) |
| # Name of the dart package for the component. If not provided, it will |
| # be inferred from the component name. |
| # |
| # package_root (optional) |
| # Path to the dart package for the component. If not provided, it will |
| # be assumed as ".". |
| # |
| # sources (optional) |
| # Relative path of source files to be included in the dart package for |
| # the component at $package_root/lib. |
| # |
| # main_dart (required) |
| # File containing the main function of the application. Either main_dart or |
| # components must be defined, but not both. |
| # |
| # package_name (optional) |
| # Name of the Dart package. This is used as an identifier in code that |
| # depends on the dart library that the *one and only* component generates. |
| # Only compatible when components is not specified (use |
| # components.dart_package_name). |
| # |
| template("_flutter_jit_component") { |
| pkg_name = target_name |
| legacy_component = false |
| if (!defined(invoker.components)) { |
| # If components is not specified, we are fitting main_dart into a component |
| # scope, and using that for the package. |
| # |
| # TODO(CP-140): Remove support for legacy_component once all existing calls |
| # to flutter_app() have a components parameter. |
| legacy_component = true |
| if (defined(invoker.fuchsia_package_name)) { |
| legacy_component_name = invoker.fuchsia_package_name |
| } else { |
| legacy_component_name = target_name |
| } |
| pkg_name = legacy_component_name |
| pkg_sources = [] |
| if (defined(invoker.sources)) { |
| pkg_sources = invoker.sources |
| } |
| components = [ |
| { |
| main_dart = invoker.main_dart |
| component_name = legacy_component_name |
| component_type = "flutter" |
| package_root = "." |
| deps = invoker.deps |
| sources = pkg_sources |
| }, |
| ] |
| } |
| flutter_dart_jit_component(target_name) { |
| forward_variables_from(invoker, "*") |
| } |
| } |
| |
| # Defines AOT runtime components to be further distributed in one package. |
| # |
| # Takes a set of flutter components and puts them into one fuchsia package with |
| # the flutter_aot_runner as its runtime. Also supports legacy calls where the |
| # components parameter isn't specified, in which we will create one default |
| # component for the package. |
| # |
| # Parameters |
| # |
| # components (required) |
| # [list of scopes] Defines the components in the package. Either main_dart |
| # or components must be defined, but not both. |
| # |
| # Entries in a scope in the resources list: |
| # |
| # component_name (required) |
| # Name of the component. |
| # |
| # main_dart (required) |
| # File containing the main function of the component. |
| # |
| # dart_package_name (optional) |
| # Name of the dart package for the component. If not provided, it will |
| # be inferred from the component name. |
| # |
| # package_root (optional) |
| # Path to the dart package for the component. If not provided, it will |
| # be assumed as ".". |
| # |
| # sources (optional) |
| # Relative path of source files to be included in the dart package for |
| # the component at $package_root/lib. |
| # |
| # main_dart (required) |
| # File containing the main function of the application. Either main_dart or |
| # components must be defined, but not both. |
| # |
| # package_name (optional) |
| # Name of the Dart package. This is used as an identifier in code that |
| # depends on the dart library that the *one and only* component generates. |
| # Only compatible when components is not specified (use |
| # components.dart_package_name). |
| # |
| template("_flutter_aot_component") { |
| # This variable isn't needed in AOT builds. |
| if (defined(invoker.flutter_driver_extendable)) { |
| not_needed(invoker, [ "flutter_driver_extendable" ]) |
| } |
| pkg_name = target_name |
| legacy_component = false |
| if (!defined(invoker.components)) { |
| # If components is not specified, we are fitting main_dart into a component |
| # scope, and using that for the package. |
| # |
| # TODO(CP-140): Remove support for legacy_component once all existing calls |
| # to flutter_app() have a components parameter. |
| legacy_component = true |
| if (defined(invoker.fuchsia_package_name)) { |
| legacy_component_name = invoker.fuchsia_package_name |
| } else { |
| legacy_component_name = target_name |
| } |
| pkg_name = legacy_component_name |
| pkg_sources = [] |
| if (defined(invoker.sources)) { |
| pkg_sources = invoker.sources |
| } |
| components = [ |
| { |
| main_dart = invoker.main_dart |
| component_name = legacy_component_name |
| component_type = "flutter" |
| package_root = "." |
| deps = invoker.deps |
| sources = pkg_sources |
| }, |
| ] |
| } |
| flutter_dart_aot_component(target_name) { |
| forward_variables_from(invoker, "*") |
| } |
| } |
| |
| template("flutter_jit_app") { |
| template_name = "_flutter_jit_component" |
| if (dart_force_product) { |
| template_name = flutter_product_app |
| } |
| |
| target(template_name, target_name) { |
| forward_variables_from(invoker, "*") |
| } |
| } |
| |
| template("flutter_aot_app") { |
| template_name = "_flutter_aot_component" |
| if (dart_force_product) { |
| template_name = flutter_product_app |
| } |
| |
| target(template_name, target_name) { |
| forward_variables_from(invoker, "*", [ "space_dart" ]) |
| } |
| } |
| |
| # Defines a Flutter application |
| # |
| # Parameters |
| # |
| # main_dart (required) |
| # Name of the Dart file containing the main function. Either main_dart or |
| # components must be defined, but not both. |
| # |
| # package_name (optional) |
| # Name of the Dart package. |
| # |
| # fuchsia_package_name (optional) |
| # Name of the Fuchsia package. |
| # |
| # deps (optional) |
| # List of Dart packages the application depends on. |
| # |
| # manifest (optional) |
| # Path to the manifest file |
| # |
| # disable_analysis (optional) |
| # Prevents analysis from being run on this target. |
| # |
| # product (optional) |
| # A boolean. Whether to build/run the app in a stripped-down Dart VM. |
| # Defaults to !is_debug. |
| # |
| # flutter_driver_extendable (optional) |
| # A boolean. Determines if, in a debug build, this package will be built |
| # with a wrapper that auto-enables flutter driver extensions when running |
| # the application in a an environment that includes TestRunner. Does not |
| # affect AOT or release builds. |
| # |
| # components (required) |
| # [list of scopes] Defines the components in the package. Either main_dart |
| # or components must be defined, but not both. |
| # |
| # Entries in a scope in the resources list: |
| # |
| # component_name (required) |
| # Name of the component. |
| # |
| # main_dart (required) |
| # File containing the main function of the component. |
| # |
| # package_root (optional) |
| # Path to the dart package for the component. If not provided, it will |
| # be assumed as ".". |
| # |
| # sources (optional) |
| # Relative path of source files to be included in the dart package for |
| # the component at $package_root/lib. |
| # |
| template("flutter_app") { |
| assert((defined(invoker.components) && !defined(invoker.main_dart)) || |
| (!defined(invoker.components) && defined(invoker.main_dart)), |
| "Only one of components or main_dart should be defined") |
| target(flutter_default_app, target_name) { |
| forward_variables_from(invoker, "*", [ "aot" ]) |
| } |
| } |
| |
| # Defines multiple Flutter/Dart applications in one fuchsia package |
| # |
| # Parameters |
| # |
| # components (required) |
| # [list of scopes] Defines the components in the package. Either main_dart |
| # or components must be defined, but not both. |
| # |
| # Entries in a scope in the resources list: |
| # |
| # component_name (required) |
| # Name of the component. |
| # |
| # main_dart (required) |
| # File containing the main function of the component. |
| # |
| # dart_package_name (optional) |
| # Name of the dart package for the component. If not provided, it will |
| # be inferred from the component name. |
| # |
| # package_root (optional) |
| # Path to the dart package for the component. If not provided, it will |
| # be assumed as ".". |
| # |
| # sources (optional) |
| # Relative path of source files to be included in the dart package for |
| # the component at $package_root/lib. |
| # |
| template("flutter_dart_apps") { |
| assert(defined(invoker.components) && !defined(invoker.main_dart), |
| "components must be defined. Use main_dart under components instead.") |
| |
| pkg_name = target_name |
| legacy_component = false |
| if (flutter_default_app == "flutter_jit_app") { |
| template_name = "flutter_dart_jit_component" |
| if (dart_force_product) { |
| template_name = flutter_product_app |
| } |
| target(template_name, target_name) { |
| forward_variables_from(invoker, "*", [ "aot" ]) |
| } |
| } else { |
| template_name = "flutter_dart_aot_component" |
| if (dart_force_product) { |
| template_name = flutter_product_app |
| } |
| target(template_name, target_name) { |
| forward_variables_from(invoker, |
| "*", |
| [ |
| "aot", |
| "space_dart", |
| ]) |
| } |
| } |
| } |