mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Switches the Linux embedding from the standard C API to the new proctable version, to allow for unit testing of the embedding layer separately from the embedder APIs implementation.
218 lines
6.1 KiB
Plaintext
218 lines
6.1 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.
|
|
|
|
assert(is_linux)
|
|
|
|
import("//flutter/shell/platform/glfw/config.gni")
|
|
import("//flutter/testing/testing.gni")
|
|
|
|
group("linux") {
|
|
deps = [
|
|
":flutter_linux_gtk",
|
|
":publish_headers_linux",
|
|
]
|
|
if (build_glfw_shell) {
|
|
deps += [
|
|
":flutter_linux_glfw",
|
|
"//flutter/shell/platform/glfw:publish_headers_glfw",
|
|
"//flutter/shell/platform/glfw/client_wrapper:publish_wrapper_glfw",
|
|
]
|
|
}
|
|
}
|
|
|
|
# Temporary workaround for the issue describe in
|
|
# https://github.com/flutter/flutter/issues/14509 and
|
|
# https://github.com/flutter/flutter/issues/14438
|
|
# Remove once the build infrastructure moves to Ubuntu 18.04 or newer, where
|
|
# the underlying issue is fixed.
|
|
config("disable_fatal_link_warnings") {
|
|
visibility = [ ":*" ]
|
|
ldflags = [ "-Wl,--no-fatal-warnings" ]
|
|
}
|
|
|
|
if (build_glfw_shell) {
|
|
shared_library("flutter_linux_glfw") {
|
|
deps = [ "//flutter/shell/platform/glfw:flutter_glfw" ]
|
|
|
|
configs += [ ":disable_fatal_link_warnings" ]
|
|
|
|
public_configs = [ "//flutter:config" ]
|
|
}
|
|
}
|
|
|
|
_public_headers = [
|
|
"public/flutter_linux/fl_basic_message_channel.h",
|
|
"public/flutter_linux/fl_binary_codec.h",
|
|
"public/flutter_linux/fl_binary_messenger.h",
|
|
"public/flutter_linux/fl_dart_project.h",
|
|
"public/flutter_linux/fl_engine.h",
|
|
"public/flutter_linux/fl_event_channel.h",
|
|
"public/flutter_linux/fl_json_message_codec.h",
|
|
"public/flutter_linux/fl_json_method_codec.h",
|
|
"public/flutter_linux/fl_message_codec.h",
|
|
"public/flutter_linux/fl_method_call.h",
|
|
"public/flutter_linux/fl_method_channel.h",
|
|
"public/flutter_linux/fl_method_codec.h",
|
|
"public/flutter_linux/fl_method_response.h",
|
|
"public/flutter_linux/fl_plugin_registrar.h",
|
|
"public/flutter_linux/fl_plugin_registry.h",
|
|
"public/flutter_linux/fl_standard_message_codec.h",
|
|
"public/flutter_linux/fl_standard_method_codec.h",
|
|
"public/flutter_linux/fl_string_codec.h",
|
|
"public/flutter_linux/fl_value.h",
|
|
"public/flutter_linux/fl_view.h",
|
|
"public/flutter_linux/flutter_linux.h",
|
|
]
|
|
|
|
config("relative_flutter_linux_headers") {
|
|
include_dirs = [ "public" ]
|
|
}
|
|
|
|
source_set("flutter_linux_sources") {
|
|
public = _public_headers + [
|
|
"fl_binary_messenger_private.h",
|
|
"fl_dart_project_private.h",
|
|
"fl_engine_private.h",
|
|
"fl_method_call_private.h",
|
|
"fl_method_channel_private.h",
|
|
"fl_method_codec_private.h",
|
|
"fl_plugin_registrar_private.h",
|
|
"fl_standard_message_codec_private.h",
|
|
]
|
|
|
|
configs += [
|
|
"//flutter/shell/platform/linux/config:gtk",
|
|
"//flutter/shell/platform/linux/config:wayland-client",
|
|
]
|
|
|
|
sources = [
|
|
"egl_utils.cc",
|
|
"fl_basic_message_channel.cc",
|
|
"fl_binary_codec.cc",
|
|
"fl_binary_messenger.cc",
|
|
"fl_dart_project.cc",
|
|
"fl_engine.cc",
|
|
"fl_event_channel.cc",
|
|
"fl_json_message_codec.cc",
|
|
"fl_json_method_codec.cc",
|
|
"fl_key_event_plugin.cc",
|
|
"fl_message_codec.cc",
|
|
"fl_method_call.cc",
|
|
"fl_method_channel.cc",
|
|
"fl_method_codec.cc",
|
|
"fl_method_response.cc",
|
|
"fl_mouse_cursor_plugin.cc",
|
|
"fl_platform_plugin.cc",
|
|
"fl_plugin_registrar.cc",
|
|
"fl_plugin_registry.cc",
|
|
"fl_renderer.cc",
|
|
"fl_renderer_headless.cc",
|
|
"fl_renderer_wayland.cc",
|
|
"fl_renderer_x11.cc",
|
|
"fl_standard_message_codec.cc",
|
|
"fl_standard_method_codec.cc",
|
|
"fl_string_codec.cc",
|
|
"fl_text_input_plugin.cc",
|
|
"fl_value.cc",
|
|
"fl_view.cc",
|
|
]
|
|
|
|
# Set flag to stop headers being directly included (library users should not do this)
|
|
defines = [
|
|
"FLUTTER_LINUX_COMPILATION",
|
|
"FLUTTER_ENGINE_NO_PROTOTYPES",
|
|
]
|
|
|
|
deps = [
|
|
"//flutter/shell/platform/common/cpp:common_cpp_input",
|
|
"//flutter/shell/platform/common/cpp:common_cpp_switches",
|
|
"//flutter/shell/platform/embedder:embedder_headers",
|
|
"//third_party/rapidjson",
|
|
]
|
|
}
|
|
|
|
source_set("flutter_linux") {
|
|
configs += [
|
|
"//flutter/shell/platform/linux/config:gtk",
|
|
"//flutter/shell/platform/linux/config:egl",
|
|
"//flutter/shell/platform/linux/config:wayland-egl",
|
|
"//flutter/shell/platform/linux/config:x11",
|
|
"//third_party/khronos:khronos_headers",
|
|
]
|
|
|
|
defines = [ "FLUTTER_ENGINE_NO_PROTOTYPES" ]
|
|
|
|
public_deps = [ ":flutter_linux_sources" ]
|
|
|
|
deps = [ "//flutter/shell/platform/embedder:embedder_as_internal_library" ]
|
|
}
|
|
|
|
test_fixtures("flutter_linux_fixtures") {
|
|
fixtures = []
|
|
}
|
|
|
|
executable("flutter_linux_unittests") {
|
|
testonly = true
|
|
|
|
sources = [
|
|
"egl_utils_test.cc",
|
|
"fl_basic_message_channel_test.cc",
|
|
"fl_binary_codec_test.cc",
|
|
"fl_binary_messenger_test.cc",
|
|
"fl_dart_project_test.cc",
|
|
"fl_event_channel_test.cc",
|
|
"fl_json_message_codec_test.cc",
|
|
"fl_json_method_codec_test.cc",
|
|
"fl_key_event_plugin_test.cc",
|
|
"fl_message_codec_test.cc",
|
|
"fl_method_channel_test.cc",
|
|
"fl_method_codec_test.cc",
|
|
"fl_method_response_test.cc",
|
|
"fl_standard_message_codec_test.cc",
|
|
"fl_standard_method_codec_test.cc",
|
|
"fl_string_codec_test.cc",
|
|
"fl_value_test.cc",
|
|
"testing/fl_test.cc",
|
|
"testing/mock_egl.cc",
|
|
"testing/mock_engine.cc",
|
|
"testing/mock_renderer.cc",
|
|
]
|
|
|
|
public_configs = [ "//flutter:config" ]
|
|
|
|
configs += [
|
|
"//flutter/shell/platform/linux/config:gtk",
|
|
"//flutter/shell/platform/linux/config:wayland-egl",
|
|
"//flutter/shell/platform/linux/config:x11",
|
|
]
|
|
|
|
defines = [
|
|
"FLUTTER_ENGINE_NO_PROTOTYPES",
|
|
|
|
# Set flag to allow public headers to be directly included
|
|
# (library users should not do this)
|
|
"FLUTTER_LINUX_COMPILATION",
|
|
]
|
|
|
|
deps = [
|
|
":flutter_linux_fixtures",
|
|
":flutter_linux_sources",
|
|
"//flutter/runtime:libdart",
|
|
"//flutter/shell/platform/embedder:embedder_headers",
|
|
"//flutter/shell/platform/embedder:embedder_test_utils",
|
|
"//flutter/testing",
|
|
]
|
|
}
|
|
|
|
shared_library("flutter_linux_gtk") {
|
|
deps = [ ":flutter_linux" ]
|
|
|
|
public_configs = [ "//flutter:config" ]
|
|
}
|
|
|
|
copy("publish_headers_linux") {
|
|
sources = _public_headers
|
|
outputs = [ "$root_out_dir/flutter_linux/{{source_file_part}}" ]
|
|
}
|