mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
197 lines
5.2 KiB
Plaintext
197 lines
5.2 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.
|
|
|
|
import("//flutter/common/config.gni")
|
|
import("//flutter/testing/testing.gni")
|
|
|
|
if (is_fuchsia) {
|
|
import("//build/fuchsia/sdk.gni")
|
|
import("//flutter/tools/fuchsia/fuchsia_archive.gni")
|
|
}
|
|
|
|
source_set("test_font") {
|
|
sources = [
|
|
"test_font_data.cc",
|
|
"test_font_data.h",
|
|
]
|
|
deps = [
|
|
"//third_party/skia",
|
|
]
|
|
public_configs = [ "//flutter:config" ]
|
|
defines = []
|
|
if (flutter_runtime_mode == "debug" || current_toolchain == host_toolchain) {
|
|
# Though the test font data is small, we dont want to add to the binary size
|
|
# on the device (in profile and release modes). We only add the same on the
|
|
# host test shells and the debug device shell.
|
|
defines += [ "EMBED_TEST_FONT_DATA=1" ]
|
|
}
|
|
}
|
|
|
|
# Picks the libdart implementation based on the Flutter runtime mode.
|
|
group("libdart") {
|
|
public_deps = []
|
|
|
|
if (flutter_runtime_mode == "profile" || flutter_runtime_mode == "release") {
|
|
public_deps += [ "//third_party/dart/runtime:libdart_precompiled_runtime" ]
|
|
} else {
|
|
public_deps += [
|
|
"//flutter/lib/snapshot",
|
|
"//third_party/dart/runtime:libdart_jit",
|
|
]
|
|
}
|
|
}
|
|
|
|
source_set("runtime") {
|
|
sources = [
|
|
"dart_isolate.cc",
|
|
"dart_isolate.h",
|
|
"dart_isolate_group_data.cc",
|
|
"dart_isolate_group_data.h",
|
|
"dart_service_isolate.cc",
|
|
"dart_service_isolate.h",
|
|
"dart_snapshot.cc",
|
|
"dart_snapshot.h",
|
|
"dart_vm.cc",
|
|
"dart_vm.h",
|
|
"dart_vm_data.cc",
|
|
"dart_vm_data.h",
|
|
"dart_vm_lifecycle.cc",
|
|
"dart_vm_lifecycle.h",
|
|
"embedder_resources.cc",
|
|
"embedder_resources.h",
|
|
"ptrace_ios.cc",
|
|
"ptrace_ios.h",
|
|
"runtime_controller.cc",
|
|
"runtime_controller.h",
|
|
"runtime_delegate.cc",
|
|
"runtime_delegate.h",
|
|
"service_protocol.cc",
|
|
"service_protocol.h",
|
|
"skia_concurrent_executor.cc",
|
|
"skia_concurrent_executor.h",
|
|
"start_up.cc",
|
|
"start_up.h",
|
|
"window_data.cc",
|
|
"window_data.h",
|
|
]
|
|
|
|
deps = [
|
|
":test_font",
|
|
"//flutter/assets",
|
|
"//flutter/common",
|
|
"//flutter/flow",
|
|
"//flutter/fml",
|
|
"//flutter/lib/io",
|
|
"//flutter/lib/ui",
|
|
"//flutter/third_party/tonic",
|
|
"//flutter/third_party/txt",
|
|
"//third_party/dart/runtime:dart_api",
|
|
"//third_party/dart/runtime/bin:dart_io_api",
|
|
"//third_party/skia",
|
|
]
|
|
|
|
# On Windows the engine finds the Dart snapshot data through symbols
|
|
# that are statically linked into the executable. On other platforms this
|
|
# data is obtained by a dynamic symbol lookup.
|
|
# The current Windows platform uses static-link instead of dynamic lookups.
|
|
# Because:
|
|
# 1. The size of the executable on Windows is not as concerned as on mobile
|
|
# platforms.
|
|
# 2. If it is a dynamic lookup method, you need to modify the properties of
|
|
# the memory page after the *.bin is dynamically loaded at runtime and
|
|
# mark it as executable. This is feasible (similar to V8 on Windows), but
|
|
# this increases the complexity of the implementation(These operations
|
|
# involve the use of some system file/memory privilege APIs and there is
|
|
# a risk of failure).
|
|
# 3. In the executable can enjoy the advantages of the windows preload
|
|
# mechanism, speed up I/O.
|
|
if (is_win) {
|
|
if (flutter_runtime_mode == "profile" ||
|
|
flutter_runtime_mode == "release") {
|
|
deps += [ "//flutter/lib/snapshot" ]
|
|
}
|
|
}
|
|
|
|
public_deps = [
|
|
"//third_party/rapidjson",
|
|
]
|
|
|
|
public_configs = [ "//flutter:config" ]
|
|
|
|
if (flutter_runtime_mode != "release" && !is_fuchsia) {
|
|
# Only link in Observatory in non-release modes on non-Fuchsia. Fuchsia
|
|
# instead puts Observatory into the runner's package.
|
|
deps += [
|
|
"//third_party/dart/runtime/observatory:embedded_observatory_archive",
|
|
]
|
|
}
|
|
}
|
|
|
|
test_fixtures("runtime_fixtures") {
|
|
dart_main = "fixtures/runtime_test.dart"
|
|
}
|
|
|
|
source_set("runtime_unittests_common") {
|
|
visibility = [ ":*" ]
|
|
|
|
testonly = true
|
|
|
|
sources = [
|
|
"runtime_test.cc",
|
|
"runtime_test.h",
|
|
]
|
|
|
|
public_deps = [
|
|
":libdart",
|
|
":runtime",
|
|
":runtime_fixtures",
|
|
"//flutter/common",
|
|
"//flutter/fml",
|
|
"//flutter/lib/snapshot",
|
|
"//flutter/shell/common",
|
|
"//flutter/testing:dart",
|
|
"//flutter/third_party/tonic",
|
|
"//third_party/dart/runtime/bin:elf_loader",
|
|
"//third_party/skia",
|
|
]
|
|
}
|
|
|
|
executable("runtime_unittests") {
|
|
testonly = true
|
|
|
|
configs += [ "//flutter:export_dynamic_symbols" ]
|
|
|
|
sources = [
|
|
"dart_isolate_unittests.cc",
|
|
"dart_lifecycle_unittests.cc",
|
|
"dart_service_isolate_unittests.cc",
|
|
"dart_vm_unittests.cc",
|
|
]
|
|
|
|
deps = [
|
|
":runtime_unittests_common",
|
|
]
|
|
}
|
|
|
|
if (is_fuchsia) {
|
|
fuchsia_test_archive("runtime_tests") {
|
|
deps = [
|
|
":runtime_fixtures",
|
|
":runtime_unittests",
|
|
]
|
|
|
|
binary = "runtime_unittests"
|
|
|
|
# TODO(gw280): https://github.com/flutter/flutter/issues/50294
|
|
# Right now we need to manually specify all the fixtures that are
|
|
# declared in the test_fixtures() call above.
|
|
resources = [
|
|
{
|
|
path = "$target_gen_dir/assets/kernel_blob.bin"
|
|
dest = "assets/kernel_blob.bin"
|
|
},
|
|
]
|
|
}
|
|
}
|