# 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") config("desktop_library_implementation") { defines = [ "FLUTTER_DESKTOP_LIBRARY" ] } _public_headers = [ "public/flutter_export.h", "public/flutter_messenger.h", "public/flutter_plugin_registrar.h", ] # Any files that are built by clients (client_wrapper code, library headers for # implementations using this shared code, etc.) include the public headers # assuming they are in the include path. This configuration should be added to # any such code that is also built by GN to make the includes work. config("relative_flutter_library_headers") { include_dirs = [ "public" ] } # The headers are a separate source set since the client wrapper is allowed # to depend on the public headers, but none of the rest of the code. source_set("common_cpp_library_headers") { public = _public_headers configs += [ ":desktop_library_implementation" ] } copy("publish_headers") { sources = _public_headers outputs = [ "$root_out_dir/{{source_file_part}}" ] } source_set("common_cpp_input") { public = [ "text_input_model.h", "text_range.h", ] sources = [ "text_input_model.cc" ] configs += [ ":desktop_library_implementation" ] public_configs = [ "//flutter:config" ] deps = [ "//flutter/fml:fml" ] if (is_win) { # For wstring_conversion. See issue #50053. defines = [ "_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING" ] } } source_set("common_cpp_switches") { public = [ "engine_switches.h" ] sources = [ "engine_switches.cc" ] public_configs = [ "//flutter:config", "//flutter/common:flutter_config", ] } source_set("common_cpp") { public = [ "incoming_message_dispatcher.h", "json_message_codec.h", "json_method_codec.h", ] # TODO: Refactor flutter_glfw.cc to move the implementations corresponding # to the _public_headers above into this target. sources = [ "incoming_message_dispatcher.cc", "json_message_codec.cc", "json_method_codec.cc", ] configs += [ ":desktop_library_implementation" ] public_configs = [ "//flutter:config" ] deps = [ ":common_cpp_library_headers", "//flutter/shell/platform/common/cpp/client_wrapper:client_wrapper", "//flutter/shell/platform/embedder:embedder_as_internal_library", ] public_deps = [ ":common_cpp_core", "//third_party/rapidjson", ] } # The portion of common_cpp that has no dependencies on the public/ # headers. This division should be revisited once the Linux GTK # embedding is futher along and it's clearer how much, if any, shared # API surface there will be. source_set("common_cpp_core") { public = [ "path_utils.h" ] sources = [ "path_utils.cc" ] public_configs = [ "//flutter:config" ] } if (enable_unittests) { test_fixtures("common_cpp_core_fixtures") { fixtures = [] } executable("common_cpp_core_unittests") { testonly = true sources = [ "path_utils_unittests.cc" ] deps = [ ":common_cpp_core", ":common_cpp_core_fixtures", "//flutter/testing", "//third_party/dart/runtime:libdart_jit", ] public_configs = [ "//flutter:config" ] } test_fixtures("common_cpp_fixtures") { fixtures = [] } executable("common_cpp_unittests") { testonly = true sources = [ "engine_switches_unittests.cc", "json_message_codec_unittests.cc", "json_method_codec_unittests.cc", "text_input_model_unittests.cc", "text_range_unittests.cc", ] deps = [ ":common_cpp", ":common_cpp_fixtures", ":common_cpp_input", ":common_cpp_switches", "//flutter/shell/platform/common/cpp/client_wrapper:client_wrapper", "//flutter/shell/platform/common/cpp/client_wrapper:client_wrapper_library_stubs", "//flutter/testing", ] public_configs = [ "//flutter:config" ] } }