| # 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/build/zip_bundle.gni") |
| import("//flutter/shell/platform/common/client_wrapper/publish.gni") |
| import("//flutter/testing/testing.gni") |
| |
| _wrapper_includes = [ |
| "include/flutter/dart_project.h", |
| "include/flutter/flutter_engine.h", |
| "include/flutter/flutter_view_controller.h", |
| "include/flutter/flutter_view.h", |
| "include/flutter/plugin_registrar_windows.h", |
| ] |
| |
| _wrapper_sources = [ |
| "flutter_engine.cc", |
| "flutter_view_controller.cc", |
| ] |
| |
| # This code will be merged into .../common/client_wrapper for client use, |
| # so uses header paths that assume the merged state. Include the header |
| # directories of the core wrapper files so these includes will work. |
| config("relative_core_wrapper_headers") { |
| include_dirs = [ |
| "//flutter/shell/platform/common/client_wrapper", |
| "//flutter/shell/platform/common/client_wrapper/include/flutter", |
| ] |
| } |
| |
| # Windows client wrapper build for internal use by the shell implementation. |
| source_set("client_wrapper_windows") { |
| sources = _wrapper_sources |
| public = _wrapper_includes |
| |
| deps = [ |
| "//flutter/shell/platform/common:common_cpp_library_headers", |
| "//flutter/shell/platform/common/client_wrapper:client_wrapper", |
| "//flutter/shell/platform/windows:flutter_windows_headers", |
| ] |
| |
| configs += |
| [ "//flutter/shell/platform/common:desktop_library_implementation" ] |
| |
| public_configs = [ |
| ":relative_core_wrapper_headers", |
| "//flutter/shell/platform/common:relative_flutter_library_headers", |
| "//flutter/shell/platform/windows:relative_flutter_windows_headers", |
| ] |
| } |
| |
| # Copies the Windows client wrapper code to the output directory. |
| publish_client_wrapper_extension("publish_wrapper_windows") { |
| public = _wrapper_includes |
| sources = _wrapper_sources |
| } |
| |
| source_set("client_wrapper_library_stubs_windows") { |
| sources = [ |
| "testing/stub_flutter_windows_api.cc", |
| "testing/stub_flutter_windows_api.h", |
| ] |
| |
| defines = [ "FLUTTER_DESKTOP_LIBRARY" ] |
| |
| public_deps = [ "//flutter/shell/platform/windows:flutter_windows_headers" ] |
| } |
| |
| test_fixtures("client_wrapper_windows_fixtures") { |
| fixtures = [] |
| } |
| |
| executable("client_wrapper_windows_unittests") { |
| testonly = true |
| |
| sources = [ |
| "dart_project_unittests.cc", |
| "flutter_engine_unittests.cc", |
| "flutter_view_controller_unittests.cc", |
| "flutter_view_unittests.cc", |
| "plugin_registrar_windows_unittests.cc", |
| ] |
| |
| # Set embedder.h to export, not import, since the stubs are locally defined. |
| defines = [ "FLUTTER_DESKTOP_LIBRARY" ] |
| |
| deps = [ |
| ":client_wrapper_library_stubs_windows", |
| ":client_wrapper_windows", |
| ":client_wrapper_windows_fixtures", |
| "//flutter/shell/platform/common/client_wrapper:client_wrapper_library_stubs", |
| "//flutter/testing", |
| |
| # TODO(chunhtai): Consider refactoring flutter_root/testing so that there's a testing |
| # target that doesn't require a Dart runtime to be linked in. |
| # https://github.com/flutter/flutter/issues/41414. |
| "//third_party/dart/runtime:libdart_jit", |
| ] |
| } |
| |
| client_wrapper_file_archive_list = [ |
| "core_implementations.cc", |
| "engine_method_result.cc", |
| "plugin_registrar.cc", |
| "README", |
| "standard_codec.cc", |
| ] |
| |
| win_client_wrapper_file_archive_list = [ |
| "flutter_engine.cc", |
| "flutter_view_controller.cc", |
| ] |
| |
| zip_bundle("client_wrapper_archive") { |
| output = "$full_target_platform_name/flutter-cpp-client-wrapper.zip" |
| deps = [ |
| ":client_wrapper_windows", |
| ":publish_wrapper_windows", |
| "//flutter/shell/platform/common/client_wrapper:client_wrapper", |
| ] |
| tmp_files = [] |
| foreach(source_file, client_wrapper_file_archive_list) { |
| tmp_files += [ |
| { |
| source = "//flutter/shell/platform/common/client_wrapper/$source_file" |
| destination = "cpp_client_wrapper/$source_file" |
| }, |
| ] |
| } |
| |
| # Windows specific source code files |
| foreach(source_file, win_client_wrapper_file_archive_list) { |
| tmp_files += [ |
| { |
| source = "//flutter/shell/platform/windows/client_wrapper/$source_file" |
| destination = "cpp_client_wrapper/$source_file" |
| }, |
| ] |
| } |
| |
| # Headers |
| headers = core_cpp_client_wrapper_includes + |
| core_cpp_client_wrapper_internal_headers |
| foreach(header, headers) { |
| rebased_path = |
| rebase_path(header, "//flutter/shell/platform/common/client_wrapper") |
| tmp_files += [ |
| { |
| source = header |
| destination = "cpp_client_wrapper/$rebased_path" |
| }, |
| ] |
| } |
| |
| # Wrapper includes |
| foreach(header, _wrapper_includes) { |
| rebased_path = |
| rebase_path("//flutter/shell/platform/windows/client_wrapper/$header", |
| "//flutter/shell/platform/windows/client_wrapper") |
| tmp_files += [ |
| { |
| source = header |
| destination = "cpp_client_wrapper/$rebased_path" |
| }, |
| ] |
| } |
| files = tmp_files |
| } |