|  | # 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/impeller/tools/impeller.gni") | 
|  | import("//flutter/shell/gpu/gpu.gni") | 
|  | import("//flutter/testing/testing.gni") | 
|  |  | 
|  | if (is_fuchsia) { | 
|  | import("//flutter/tools/fuchsia/gn-sdk/src/gn_configs.gni") | 
|  | } | 
|  |  | 
|  | # Template to generate a dart embedder resource.cc file. | 
|  | # Required invoker inputs: | 
|  | #   String output (name of output file) | 
|  | #   List inputs (list of input files to be included) | 
|  | #   String table_name (name of symbol for resource table) | 
|  | #   String root_prefix (base directory of resources) | 
|  | # Optional invoker inputs: | 
|  | #   String input_directory (directory of resources that are recursively added) | 
|  | #   List deps | 
|  | #   List datadeps | 
|  | template("dart_embedder_resources") { | 
|  | action(target_name) { | 
|  | script = "$dart_src/runtime/tools/create_resources.py" | 
|  | deps = [] | 
|  | if (defined(invoker.deps)) { | 
|  | deps += invoker.deps | 
|  | } | 
|  | datadeps = [] | 
|  | if (defined(invoker.datadeps)) { | 
|  | datadeps = invoker.datadeps | 
|  | } | 
|  |  | 
|  | output = invoker.output | 
|  | outputs = [ output ] | 
|  |  | 
|  | inputs = [ script ] + invoker.inputs | 
|  |  | 
|  | root_prefix = rebase_path(invoker.root_prefix) | 
|  |  | 
|  | args = [ | 
|  | "--output", | 
|  | rebase_path(output), | 
|  | "--outer_namespace", | 
|  | "flutter", | 
|  | "--inner_namespace", | 
|  | "runtime", | 
|  | "--table_name", | 
|  | invoker.table_name, | 
|  | "--root_prefix", | 
|  | root_prefix, | 
|  | ] | 
|  | if (defined(invoker.input_directory)) { | 
|  | args += [ | 
|  | "--client_root", | 
|  | rebase_path(invoker.input_directory), | 
|  | ] | 
|  | } | 
|  | args += rebase_path(invoker.inputs) | 
|  | } | 
|  | } | 
|  |  | 
|  | source_set("platform_message_handler") { | 
|  | sources = [ "platform_message_handler.h" ] | 
|  | public_configs = [ "//flutter:config" ] | 
|  | deps = [ "//flutter/fml:fml" ] | 
|  | } | 
|  |  | 
|  | source_set("display") { | 
|  | sources = [ | 
|  | "display.cc", | 
|  | "display.h", | 
|  | "variable_refresh_rate_display.cc", | 
|  | "variable_refresh_rate_display.h", | 
|  | "variable_refresh_rate_reporter.h", | 
|  | ] | 
|  | public_configs = [ "//flutter:config" ] | 
|  | deps = [ "//flutter/fml:fml" ] | 
|  | } | 
|  |  | 
|  | source_set("common") { | 
|  | sources = [ | 
|  | "animator.cc", | 
|  | "animator.h", | 
|  | "context_options.cc", | 
|  | "context_options.h", | 
|  | "display_manager.cc", | 
|  | "display_manager.h", | 
|  | "dl_op_spy.cc", | 
|  | "dl_op_spy.h", | 
|  | "engine.cc", | 
|  | "engine.h", | 
|  | "pipeline.cc", | 
|  | "pipeline.h", | 
|  | "platform_view.cc", | 
|  | "platform_view.h", | 
|  | "pointer_data_dispatcher.cc", | 
|  | "pointer_data_dispatcher.h", | 
|  | "rasterizer.cc", | 
|  | "rasterizer.h", | 
|  | "resource_cache_limit_calculator.cc", | 
|  | "resource_cache_limit_calculator.h", | 
|  | "run_configuration.cc", | 
|  | "run_configuration.h", | 
|  | "serialization_callbacks.cc", | 
|  | "serialization_callbacks.h", | 
|  | "shell.cc", | 
|  | "shell.h", | 
|  | "shell_io_manager.cc", | 
|  | "shell_io_manager.h", | 
|  | "skia_event_tracer_impl.cc", | 
|  | "skia_event_tracer_impl.h", | 
|  | "snapshot_controller.cc", | 
|  | "snapshot_controller.h", | 
|  | "snapshot_controller_skia.cc", | 
|  | "snapshot_controller_skia.h", | 
|  | "snapshot_surface_producer.h", | 
|  | "switches.cc", | 
|  | "switches.h", | 
|  | "thread_host.cc", | 
|  | "thread_host.h", | 
|  | "vsync_waiter.cc", | 
|  | "vsync_waiter.h", | 
|  | "vsync_waiter_fallback.cc", | 
|  | "vsync_waiter_fallback.h", | 
|  | ] | 
|  |  | 
|  | public_configs = [ "//flutter:config" ] | 
|  |  | 
|  | public_deps = [ | 
|  | ":display", | 
|  | ":platform_message_handler", | 
|  | "//flutter/shell/version", | 
|  | "//flutter/third_party/rapidjson", | 
|  | "//flutter/third_party/tonic", | 
|  | "//flutter/third_party/txt", | 
|  | ] | 
|  |  | 
|  | deps = [ | 
|  | "$dart_src/runtime:dart_api", | 
|  | "//flutter/assets", | 
|  | "//flutter/common", | 
|  | "//flutter/common/graphics", | 
|  | "//flutter/flow", | 
|  | "//flutter/fml", | 
|  | "//flutter/lib/ui", | 
|  | "//flutter/runtime", | 
|  | "//flutter/shell/common:base64", | 
|  | "//flutter/shell/profiling", | 
|  | "//flutter/skia", | 
|  | ] | 
|  |  | 
|  | if (impeller_supports_rendering) { | 
|  | sources += [ | 
|  | "snapshot_controller_impeller.cc", | 
|  | "snapshot_controller_impeller.h", | 
|  | ] | 
|  |  | 
|  | deps += [ "//flutter/impeller" ] | 
|  | } | 
|  | } | 
|  |  | 
|  | # These are in their own source_set to avoid a dependency cycle with //common/graphics | 
|  | source_set("base64") { | 
|  | sources = [ | 
|  | "base64.cc", | 
|  | "base64.h", | 
|  | ] | 
|  | deps = [ "//flutter/fml" ] | 
|  | } | 
|  |  | 
|  | template("shell_host_executable") { | 
|  | executable(target_name) { | 
|  | testonly = true | 
|  |  | 
|  | deps = [] | 
|  |  | 
|  | ldflags = [] | 
|  |  | 
|  | forward_variables_from(invoker, "*") | 
|  |  | 
|  | deps += [ | 
|  | ":common", | 
|  | "//flutter/lib/snapshot", | 
|  | "//flutter/runtime:libdart", | 
|  | ] | 
|  |  | 
|  | public_configs = [ "//flutter:export_dynamic_symbols" ] | 
|  | } | 
|  | } | 
|  |  | 
|  | if (enable_unittests) { | 
|  | shell_gpu_configuration("shell_unittests_gpu_configuration") { | 
|  | enable_software = test_enable_software | 
|  | enable_vulkan = test_enable_vulkan | 
|  | enable_gl = test_enable_gl | 
|  | enable_metal = test_enable_metal | 
|  | } | 
|  |  | 
|  | test_fixtures("shell_unittests_fixtures") { | 
|  | dart_main = "fixtures/shell_test.dart" | 
|  |  | 
|  | fixtures = [ | 
|  | "fixtures/shelltest_screenshot.png", | 
|  | "fixtures/hello_loop_2.gif", | 
|  | "//flutter/third_party/txt/third_party/fonts/Roboto-Regular.ttf", | 
|  | ] | 
|  | } | 
|  |  | 
|  | shell_host_executable("shell_benchmarks") { | 
|  | sources = [ | 
|  | "dart_native_benchmarks.cc", | 
|  | "shell_benchmarks.cc", | 
|  | ] | 
|  |  | 
|  | deps = [ | 
|  | ":shell_unittests_fixtures", | 
|  | "//flutter/benchmarking", | 
|  | "//flutter/flow", | 
|  | "//flutter/testing:dart", | 
|  | "//flutter/testing:fixture_test", | 
|  | "//flutter/testing:testing_lib", | 
|  | ] | 
|  | } | 
|  |  | 
|  | config("shell_test_fixture_sources_config") { | 
|  | defines = [ | 
|  | # Required for MSVC STL | 
|  | "_ENABLE_ATOMIC_ALIGNMENT_FIX", | 
|  | ] | 
|  | } | 
|  |  | 
|  | source_set("shell_test_fixture_sources") { | 
|  | testonly = true | 
|  |  | 
|  | sources = [ | 
|  | "shell_test.cc", | 
|  | "shell_test.h", | 
|  | "shell_test_external_view_embedder.cc", | 
|  | "shell_test_external_view_embedder.h", | 
|  | "shell_test_platform_view.cc", | 
|  | "shell_test_platform_view.h", | 
|  | "vsync_waiters_test.cc", | 
|  | "vsync_waiters_test.h", | 
|  | ] | 
|  |  | 
|  | public_deps = [ | 
|  | "//flutter/common/graphics", | 
|  | "//flutter/flow", | 
|  | "//flutter/runtime", | 
|  | "//flutter/shell/common", | 
|  | "//flutter/testing", | 
|  | ] | 
|  |  | 
|  | deps = [ | 
|  | ":shell_unittests_gpu_configuration", | 
|  | "//flutter/assets", | 
|  | "//flutter/common", | 
|  | "//flutter/lib/ui", | 
|  | "//flutter/skia", | 
|  | "//flutter/testing:dart", | 
|  | "//flutter/testing:fixture_test", | 
|  | "//flutter/third_party/rapidjson", | 
|  | ] | 
|  |  | 
|  | if (impeller_supports_rendering) { | 
|  | deps += [ "//flutter/impeller" ] | 
|  | } | 
|  |  | 
|  | public_configs = [ | 
|  | ":shell_test_fixture_sources_config", | 
|  | ":shell_unittests_gpu_configuration_config", | 
|  | ] | 
|  |  | 
|  | if (test_enable_gl) { | 
|  | sources += [ | 
|  | "shell_test_platform_view_gl.cc", | 
|  | "shell_test_platform_view_gl.h", | 
|  | ] | 
|  |  | 
|  | public_deps += [ "//flutter/testing:opengl" ] | 
|  | } | 
|  |  | 
|  | if (test_enable_vulkan) { | 
|  | sources += [ | 
|  | "shell_test_platform_view_vulkan.cc", | 
|  | "shell_test_platform_view_vulkan.h", | 
|  | ] | 
|  |  | 
|  | public_deps += [ | 
|  | "//flutter/flutter_vma:flutter_skia_vma", | 
|  | "//flutter/vulkan", | 
|  | ] | 
|  | } | 
|  |  | 
|  | if (test_enable_metal) { | 
|  | sources += [ | 
|  | "shell_test_platform_view_metal.h", | 
|  | "shell_test_platform_view_metal.mm", | 
|  | ] | 
|  |  | 
|  | public_deps += [ "//flutter/shell/platform/darwin/graphics" ] | 
|  | } | 
|  | } | 
|  |  | 
|  | shell_host_executable("shell_unittests") { | 
|  | testonly = true | 
|  |  | 
|  | sources = [ | 
|  | "animator_unittests.cc", | 
|  | "base64_unittests.cc", | 
|  | "context_options_unittests.cc", | 
|  | "dl_op_spy_unittests.cc", | 
|  | "engine_animator_unittests.cc", | 
|  | "engine_unittests.cc", | 
|  | "input_events_unittests.cc", | 
|  | "persistent_cache_unittests.cc", | 
|  | "pipeline_unittests.cc", | 
|  | "rasterizer_unittests.cc", | 
|  | "resource_cache_limit_calculator_unittests.cc", | 
|  | "shell_unittests.cc", | 
|  | "switches_unittests.cc", | 
|  | "variable_refresh_rate_display_unittests.cc", | 
|  | "vsync_waiter_unittests.cc", | 
|  | ] | 
|  |  | 
|  | deps = [ | 
|  | ":shell_test_fixture_sources", | 
|  | ":shell_unittests_fixtures", | 
|  | "//flutter/assets", | 
|  | "//flutter/common/graphics", | 
|  | "//flutter/display_list/testing:display_list_testing", | 
|  | "//flutter/shell/common:base64", | 
|  | "//flutter/shell/profiling:profiling_unittests", | 
|  | "//flutter/shell/version", | 
|  | "//flutter/testing:fixture_test", | 
|  | "//flutter/third_party/googletest:gmock", | 
|  | ] | 
|  |  | 
|  | if (is_fuchsia) { | 
|  | sources += [ "shell_fuchsia_unittests.cc" ] | 
|  |  | 
|  | deps += [ | 
|  | "${fuchsia_sdk}/fidl/fuchsia.intl", | 
|  | "${fuchsia_sdk}/fidl/fuchsia.settings", | 
|  | "${fuchsia_sdk}/pkg/fidl_cpp", | 
|  | "${fuchsia_sdk}/pkg/sys_cpp", | 
|  | ] | 
|  | } else if (shell_enable_gl) { | 
|  | # TODO(63837): This test is hard-coded to use a TestGLSurface so it cannot | 
|  | # run on fuchsia or when GL is not enabled. | 
|  | sources += [ "shell_io_manager_unittests.cc" ] | 
|  | deps += [ "//flutter/third_party/swiftshader" ] | 
|  | } | 
|  |  | 
|  | if (shell_enable_gl) { | 
|  | deps += [ | 
|  | "//flutter/third_party/angle:libEGL_static", | 
|  | "//flutter/third_party/angle:libGLESv2_static", | 
|  | "//flutter/third_party/swiftshader", | 
|  | ] | 
|  | } | 
|  | } | 
|  | } |