Setup GN rules to package embedder dylib as a Mac framework where supported. (flutter/engine#4270)

This commit is contained in:
Chinmay Garde
2017-10-24 12:50:13 -07:00
committed by GitHub
parent a8b5631035
commit 848dc59f89
5 changed files with 163 additions and 12 deletions

2
DEPS
View File

@@ -114,7 +114,7 @@ allowed_hosts = [
]
deps = {
'src': 'https://github.com/flutter/buildroot.git' + '@' + 'fcb277b9b2f78b5b59cda0a0b15edfc5f5578807',
'src': 'https://github.com/flutter/buildroot.git' + '@' + '77c6728e5ac9fc7d08b163ed5bf8bc64fc463f21',
# Fuchsia compatibility
#

View File

@@ -33,8 +33,10 @@ group("flutter") {
# If on the host, compile all unittests targets.
if (current_toolchain == host_toolchain) {
if (is_mac) {
public_deps +=
[ "$flutter_root/shell/platform/darwin:flutter_channels_unittests" ]
public_deps += [
"$flutter_root/shell/platform/darwin:flutter_channels_unittests",
"$flutter_root/shell/platform/embedder:flutter_embedder_framework",
]
}
if (!is_win) {
public_deps += [ "$flutter_root/shell/platform/embedder:flutter_engine" ]
@@ -64,7 +66,9 @@ if (is_fuchsia) {
package_name = "flutter"
deps = [ ":flutter" ]
deps = [
":flutter",
]
binaries = [
{

View File

@@ -12,20 +12,18 @@ source_set("embedder") {
]
deps = [
"//third_party/dart/runtime:libdart_jit",
"//third_party/dart/runtime/bin:embedded_dart_io",
"$flutter_root/common",
"$flutter_root/fml",
"$flutter_root/shell/common",
"$flutter_root/shell/gpu",
"//garnet/public/lib/fxl",
"//third_party/dart/runtime:libdart_jit",
"//third_party/dart/runtime/bin:embedded_dart_io",
"//third_party/skia",
"//topaz/lib/tonic",
]
public_configs = [
"$flutter_root:config",
]
public_configs = [ "$flutter_root:config" ]
}
shared_library("flutter_engine") {
@@ -33,7 +31,122 @@ shared_library("flutter_engine") {
":embedder",
]
public_configs = [
"$flutter_root:config",
]
public_configs = [ "$flutter_root:config" ]
}
if (is_mac) {
_flutter_embedder_framework_dir = "$root_out_dir/FlutterEmbedder.framework"
copy("copy_dylib") {
visibility = [ ":*" ]
sources = [
"$root_out_dir/libflutter_engine.dylib",
]
outputs = [
"$_flutter_embedder_framework_dir/Versions/A/FlutterEmbedder",
]
deps = [
":flutter_engine",
]
}
copy("copy_headers") {
visibility = [ ":*" ]
sources = [
"embedder.h",
]
outputs = [
"$_flutter_embedder_framework_dir/Versions/A/Headers/FlutterEmbedder.h",
]
}
copy("copy_icu") {
visibility = [ ":*" ]
sources = [
"//third_party/icu/common/icudtl.dat",
]
outputs = [
"$_flutter_embedder_framework_dir/Versions/A/Resources/icudtl.dat",
]
}
copy("copy_info_plist") {
visibility = [ ":*" ]
sources = [
"EmbedderInfo.plist",
]
outputs = [
"$_flutter_embedder_framework_dir/Versions/A/Resources/Info.plist",
]
}
copy("copy_module_map") {
visibility = [ ":*" ]
sources = [
"embedder.modulemap",
]
outputs = [
"$_flutter_embedder_framework_dir/Versions/A/Modules/module.modulemap",
]
}
action("install_dylib") {
visibility = [ ":*" ]
stamp_file = "$root_build_dir/flutter_embedder_install_name_stamp"
script = "$flutter_root/sky/tools/change_install_name.py"
inputs = [
"$_flutter_embedder_framework_dir/Versions/A/FlutterEmbedder",
]
outputs = [
stamp_file,
]
args = [
"--dylib",
"FlutterEmbedder.framework/Versions/A/FlutterEmbedder",
"--install_name",
"@rpath/FlutterEmbedder.framework/Versions/A/FlutterEmbedder",
"--stamp",
rebase_path(stamp_file),
]
deps = [
":copy_dylib",
]
}
action("generate_symlinks") {
script = "//build/config/mac/package_framework.py"
outputs = [
"$root_build_dir/FlutterEmbedder.stamp",
]
args = [
"--framework",
"FlutterEmbedder.framework",
"--version",
"A",
"--contents",
"FlutterEmbedder",
"Resources",
"Headers",
"Modules",
"--stamp",
"FlutterEmbedder.stamp",
]
deps = [
":copy_headers",
":copy_icu",
":copy_info_plist",
":copy_module_map",
":install_dylib",
]
}
group("flutter_embedder_framework") {
deps = [
":generate_symlinks",
]
}
}

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>FlutterEmbedder</string>
<key>CFBundleIdentifier</key>
<string>io.flutter.flutter_embedder</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>FlutterEmbedder</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSupportedPlatforms</key>
<array>
<string>MacOSX</string>
</array>
<key>CFBundleVersion</key>
<string>1</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright 2017 The Flutter Authors. All rights reserved.</string>
</dict>
</plist>

View File

@@ -0,0 +1,6 @@
framework module FlutterEmbedder {
umbrella header "FlutterEmbedder.h"
export *
module * { export * }
}