blob: 1d40c3c1314fb50668997e845eb8be4f815cad42 [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/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.
"$dart_src/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
}