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