blob: 3e2fbb624d45ecdac6a309b0dcffaef856e46235 [file] [log] [blame]
# 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.
if (is_android) {
import("//build/config/android/config.gni")
}
import("//build/fuchsia/sdk.gni")
if (target_cpu == "arm" || target_cpu == "arm64") {
import("//build/config/arm.gni")
}
if (is_fuchsia) {
import("//build/toolchain/clang.gni")
}
declare_args() {
# The runtime mode ("debug", "profile", "release", or "jit_release")
flutter_runtime_mode = "debug"
# Whether to use the Skia text shaper module
flutter_enable_skshaper = false
# A copy of the enable_bitcode flag from build/toolchain/clang.gni.
# This needs to be mirrored here because build/toolchain/clang.gni does
# not exist in the Fuchsia source tree.
flutter_enable_bitcode = false
}
# feature_defines_list ---------------------------------------------------------
feature_defines_list = [
"FLUTTER_RUNTIME_MODE_DEBUG=1",
"FLUTTER_RUNTIME_MODE_PROFILE=2",
"FLUTTER_RUNTIME_MODE_RELEASE=3",
"FLUTTER_RUNTIME_MODE_JIT_RELEASE=4",
]
if (flutter_runtime_mode == "debug") {
feature_defines_list += [
"FLUTTER_RUNTIME_MODE=1",
"FLUTTER_JIT_RUNTIME=1",
]
} else if (flutter_runtime_mode == "profile") {
feature_defines_list += [ "FLUTTER_RUNTIME_MODE=2" ]
} else if (flutter_runtime_mode == "release") {
feature_defines_list += [
"FLUTTER_RUNTIME_MODE=3",
"FLUTTER_RELEASE=1",
]
} else if (flutter_runtime_mode == "jit_release") {
feature_defines_list += [
"FLUTTER_RUNTIME_MODE=4",
"FLUTTER_RELEASE=1",
"FLUTTER_JIT_RUNTIME=1",
]
} else {
feature_defines_list += [ "FLUTTER_RUNTIME_MODE=0" ]
}
if (is_fuchsia) {
# TODO(chinmaygarde): This is always set. The macro may now be removed.
feature_defines_list += [ "FUCHSIA_SDK=1" ]
}
if ((is_ios || is_mac) && defined(enable_bitcode)) {
flutter_enable_bitcode = enable_bitcode
}
if (is_ios || is_mac) {
flutter_cflags_objc = [
"-Werror=overriding-method-mismatch",
"-Werror=undeclared-selector",
]
flutter_cflags_objcc = flutter_cflags_objc
}
# This template creates a `source_set` in both standard and "fuchsia_legacy"
# configurations.
#
# The "fuchsia_legacy" configuration includes old, non-embedder API sources and
# defines the LEGACY_FUCHSIA_EMBEDDER symbol. This template and the config
# are both transitional and will be removed after the embedder API transition
# is complete.
# TODO(fxb/54041): Remove when no longer neccesary.
#
# `sources`, `defines`, `public_configs`, `configs`, `public_deps`, `deps` work
# as they do in a normal `source_set`.
#
# `legacy_deps` is the list of dependencies which should be mutated by
# appending '_fuchsia_legacy' when creating the 2 `source_set`'s. The template adds
# `legacy_deps` to `public_deps`, whether it mutates them or not.
template("source_set_maybe_fuchsia_legacy") {
public_deps_non_legacy = []
deps_non_legacy = []
if (defined(invoker.public_deps)) {
public_deps_non_legacy += invoker.public_deps
}
if (defined(invoker.deps)) {
deps_non_legacy += invoker.deps
}
if (defined(invoker.public_deps_legacy_and_next)) {
foreach(legacy_dep, invoker.public_deps_legacy_and_next) {
public_deps_non_legacy += [ legacy_dep ]
}
}
if (defined(invoker.deps_legacy_and_next)) {
foreach(legacy_dep, invoker.deps_legacy_and_next) {
deps_non_legacy += [ legacy_dep ]
}
}
source_set(target_name) {
forward_variables_from(invoker,
[
"testonly",
"sources",
"defines",
"public_configs",
"configs",
])
public_deps = public_deps_non_legacy
deps = deps_non_legacy
}
if (is_fuchsia) {
legagcy_suffix = "_fuchsia_legacy"
sources_legacy = []
if (defined(invoker.sources_legacy)) {
sources_legacy += invoker.sources_legacy
}
if (defined(invoker.sources)) {
sources_legacy += invoker.sources
}
public_configs_legacy = [ "//flutter:fuchsia_legacy" ]
if (defined(invoker.public_configs)) {
public_configs_legacy += invoker.public_configs
}
public_deps_legacy = []
deps_legacy = []
if (defined(invoker.public_deps)) {
public_deps_legacy += invoker.public_deps
}
if (defined(invoker.deps)) {
deps_legacy += invoker.deps
}
if (defined(invoker.public_deps_legacy)) {
public_deps_legacy += invoker.public_deps_legacy
}
if (defined(invoker.deps_legacy)) {
deps_legacy += invoker.deps_legacy
}
if (defined(invoker.public_deps_legacy_and_next)) {
foreach(legacy_dep, invoker.public_deps_legacy_and_next) {
public_deps_legacy += [ legacy_dep + legagcy_suffix ]
}
}
if (defined(invoker.deps_legacy_and_next)) {
foreach(legacy_dep, invoker.deps_legacy_and_next) {
deps_legacy += [ legacy_dep + legagcy_suffix ]
}
}
source_set(target_name + legagcy_suffix) {
forward_variables_from(invoker,
[
"testonly",
"defines",
"configs",
])
sources = sources_legacy
public_configs = public_configs_legacy
public_deps = public_deps_legacy
deps = deps_legacy
}
} else {
if (defined(invoker.sources_legacy)) {
not_needed(invoker, [ "sources_legacy" ])
}
if (defined(invoker.public_deps_legacy)) {
not_needed(invoker, [ "public_deps_legacy" ])
}
if (defined(invoker.deps_legacy)) {
not_needed(invoker, [ "deps_legacy" ])
}
}
}