mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Tweak the primary flutter build rule so that fuchsia is more similar to other platforms in how tests and the shell are built. Only embedder_unittests and GLFW tests are disabled on Fuchsia now. TEST: Ran unittests on host/fuchsia; workstation on fuchsia BUG: fxb/53847, fxb/54056
317 lines
10 KiB
Plaintext
317 lines
10 KiB
Plaintext
# 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",
|
|
])
|
|
}
|
|
}
|
|
}
|