| # 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", |
| "//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" |
| }, |
| ] |
| } |
| } |