blob: 8e2d9f2174b3ac8efa03be96a7dcfbc2d3f36716 [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.
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",
]
}
}
}