Skip to content

Commit

Permalink
Allow building the embedder API for the target toolchains. (flutter#6069
Browse files Browse the repository at this point in the history
)
  • Loading branch information
chinmaygarde authored Aug 22, 2018
1 parent c62248b commit c822ab2
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 10 deletions.
2 changes: 1 addition & 1 deletion BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ group("flutter") {
public_deps = [
"$flutter_root/lib/snapshot:generate_snapshot_bin",
"$flutter_root/lib/snapshot:kernel_platform_files",
"$flutter_root/shell/platform/embedder:flutter_engine",
"$flutter_root/sky",
]

Expand Down Expand Up @@ -45,7 +46,6 @@ group("flutter") {
"$flutter_root/runtime:runtime_unittests",
"$flutter_root/shell/common:shell_unittests",
"$flutter_root/shell/platform/embedder:embedder_unittests",
"$flutter_root/shell/platform/embedder:flutter_engine",
"$flutter_root/synchronization:synchronization_unittests",
"$flutter_root/third_party/txt:txt_unittests",
]
Expand Down
24 changes: 16 additions & 8 deletions shell/platform/embedder/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import("$flutter_root/testing/testing.gni")
import("$flutter_root/shell/gpu/gpu.gni")
import("$flutter_root/shell/platform/embedder/embedder.gni")

shell_gpu_configuration("embedder_gpu_configuration") {
enable_software = false
Expand Down Expand Up @@ -205,14 +206,21 @@ if (is_mac) {
}

group("flutter_engine") {
# All platforms require the embedder dylib and headers.
deps = [
":copy_headers",
":flutter_engine_library",
]
deps = []

build_embedder_api =
current_toolchain == host_toolchain || embedder_for_target

if (build_embedder_api) {
# All platforms require the embedder dylib and headers.
deps += [
":copy_headers",
":flutter_engine_library",
]

# For the Mac, the dylib is packaged in a framework with the appropriate headers.
if (is_mac) {
deps += [ ":flutter_embedder_framework" ]
# For the Mac, the dylib is packaged in a framework with the appropriate headers.
if (is_mac) {
deps += [ ":flutter_embedder_framework" ]
}
}
}
13 changes: 13 additions & 0 deletions shell/platform/embedder/embedder.gni
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Copyright 2018 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.

declare_args() {
# By default, the dynamic library target exposing the embedder API is only
# built for the host. The reasoning is that platforms that have target
# definitions would not need an embedder API because an embedder
# implementation is already provided for said target. This flag allows tbe
# builder to obtain a shared library exposing the embedder API for alternative
# embedder implementations.
embedder_for_target = false
}
5 changes: 4 additions & 1 deletion tools/gn
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,8 @@ def to_gn_args(args):
gn_args['is_debug'] = args.unoptimized
gn_args['android_full_debug'] = args.target_os == 'android' and args.unoptimized
gn_args['is_clang'] = not sys.platform.startswith(('cygwin', 'win'))

gn_args['embedder_for_target'] = args.embedder_for_target

enable_lto = args.lto
if args.unoptimized:
Expand Down Expand Up @@ -234,9 +236,10 @@ def parse_args(args):
parser.add_argument('--target-sysroot', type=str)
parser.add_argument('--toolchain-prefix', type=str)

parser.add_argument('--use-glfw', action='store_true', default=False)
parser.add_argument('--enable-vulkan', action='store_true', default=False)

parser.add_argument('--embedder-for-target', dest='embedder_for_target', action='store_true', default=False)

return parser.parse_args(args)

def main(argv):
Expand Down

0 comments on commit c822ab2

Please sign in to comment.