BUILD.gn 5.5 KB
Newer Older
1 2 3 4 5 6
# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

assert(is_ios)

7
import("$flutter_root/common/config.gni")
8 9
import("//build/config/ios/ios_sdk.gni")

10 11
_flutter_framework_dir = "$root_out_dir/Flutter.framework"

12 13 14 15 16 17 18 19
shared_library("flutter_framework_dylib") {
  visibility = [ ":*" ]

  output_name = "Flutter"

  sources = [
    "framework/Headers/Flutter.h",
    "framework/Headers/FlutterAppDelegate.h",
20 21 22
    "framework/Headers/FlutterBinaryMessenger.h",
    "framework/Headers/FlutterChannels.h",
    "framework/Headers/FlutterCodecs.h",
23
    "framework/Headers/FlutterDartProject.h",
24
    "framework/Headers/FlutterMacros.h",
25
    "framework/Headers/FlutterPlugin.h",
26
    "framework/Headers/FlutterViewController.h",
27
    "framework/Headers/FlutterNavigationController.h",
28
    "framework/Source/FlutterAppDelegate.mm",
29 30
    "framework/Source/FlutterChannels.mm",
    "framework/Source/FlutterCodecs.mm",
31
    "framework/Source/FlutterDartProject.mm",
32
    "framework/Source/FlutterDartProject_Internal.h",
33 34
    "framework/Source/FlutterDartSource.h",
    "framework/Source/FlutterDartSource.mm",
35 36
    "framework/Source/FlutterPlatformPlugin.h",
    "framework/Source/FlutterPlatformPlugin.mm",
37 38
    "framework/Source/FlutterStandardCodec.mm",
    "framework/Source/FlutterStandardCodec_Internal.h",
39 40 41
    "framework/Source/FlutterTextInputDelegate.h",
    "framework/Source/FlutterTextInputPlugin.h",
    "framework/Source/FlutterTextInputPlugin.mm",
42 43 44
    "framework/Source/FlutterView.h",
    "framework/Source/FlutterView.mm",
    "framework/Source/FlutterViewController.mm",
45
    "framework/Source/FlutterNavigationController.mm",
46 47
    "framework/Source/accessibility_bridge.h",
    "framework/Source/accessibility_bridge.mm",
48 49
    "framework/Source/flutter_main_ios.h",
    "framework/Source/flutter_main_ios.mm",
50 51
    "framework/Source/flutter_touch_mapper.h",
    "framework/Source/flutter_touch_mapper.mm",
52 53
    "framework/Source/platform_message_router.h",
    "framework/Source/platform_message_router.mm",
54 55
    "framework/Source/vsync_waiter_ios.h",
    "framework/Source/vsync_waiter_ios.mm",
56 57 58 59 60 61 62 63
    "ios_gl_context.h",
    "ios_gl_context.mm",
    "ios_surface.h",
    "ios_surface.mm",
    "ios_surface_gl.h",
    "ios_surface_gl.mm",
    "ios_surface_software.h",
    "ios_surface_software.mm",
64 65 66
    "platform_view_ios.h",
    "platform_view_ios.mm",
  ]
67

68
  deps = [
69 70 71 72 73 74 75 76 77
    "$flutter_root/flow",
    "$flutter_root/fml",
    "$flutter_root/glue",
    "$flutter_root/lib/ui",
    "$flutter_root/shell/common",
    "$flutter_root/shell/gpu",
    "$flutter_root/shell/platform/darwin/common",
    "$flutter_root/sky/engine/platform",
    "$flutter_root/sky/engine/wtf",
78
    "//garnet/public/lib/fxl",
79
    "//third_party/skia",
80
  ]
81
  if (flutter_runtime_mode == "debug") {
82
    deps += [ "//third_party/dart/runtime:libdart_jit" ]
83
  } else {
84
    deps += [ "//third_party/dart/runtime:libdart_precompiled_runtime" ]
85
  }
86

87 88 89 90
  public_configs = [
    "$flutter_root:config",
  ]

91
  defines = [ "FLUTTER_FRAMEWORK" ]
92 93 94 95 96 97 98 99 100 101

  libs = [
    "UIKit.framework",
    "OpenGLES.framework",
    "AVFoundation.framework",
    "AudioToolbox.framework",
    "QuartzCore.framework",
  ]
}

102 103
copy("framework_dylib") {
  visibility = [ ":*" ]
104 105 106 107 108 109
  sources = [
    "$root_out_dir/libFlutter.dylib",
  ]
  outputs = [
    "$_flutter_framework_dir/Flutter",
  ]
110 111 112 113 114 115 116 117 118

  deps = [
    ":flutter_framework_dylib",
  ]
}

action("framework_install_name") {
  visibility = [ ":*" ]
  stamp_file = "$root_out_dir/flutter_install_name_stamp"
119
  script = "$flutter_root/sky/tools/change_install_name.py"
120

121 122 123 124 125 126
  inputs = [
    "$_flutter_framework_dir/Flutter",
  ]
  outputs = [
    stamp_file,
  ]
127 128 129 130 131 132 133 134 135 136 137

  args = [
    "--dylib",
    rebase_path("$_flutter_framework_dir/Flutter"),
    "--install_name",
    "@rpath/Flutter.framework/Flutter",
    "--stamp",
    rebase_path(stamp_file),
  ]

  deps = [
138
    ":framework_dylib",
139 140 141 142 143
  ]
}

copy("framework_info_plist") {
  visibility = [ ":*" ]
144 145 146 147 148 149
  sources = [
    "framework/Info.plist",
  ]
  outputs = [
    "$_flutter_framework_dir/Info.plist",
  ]
150 151 152 153
}

copy("framework_module_map") {
  visibility = [ ":*" ]
154 155 156 157 158 159
  sources = [
    "framework/module.modulemap",
  ]
  outputs = [
    "$_flutter_framework_dir/Modules/module.modulemap",
  ]
160
}
161

162 163 164 165 166
copy("framework_headers") {
  visibility = [ ":*" ]
  sources = [
    "framework/Headers/Flutter.h",
    "framework/Headers/FlutterAppDelegate.h",
167 168 169
    "framework/Headers/FlutterBinaryMessenger.h",
    "framework/Headers/FlutterChannels.h",
    "framework/Headers/FlutterCodecs.h",
170
    "framework/Headers/FlutterDartProject.h",
171
    "framework/Headers/FlutterMacros.h",
172
    "framework/Headers/FlutterPlugin.h",
173
    "framework/Headers/FlutterViewController.h",
174
    "framework/Headers/FlutterNavigationController.h",
175
  ]
176 177 178
  outputs = [
    "$_flutter_framework_dir/Headers/{{source_file_part}}",
  ]
179 180 181 182 183 184
}

copy("framework_icu") {
  visibility = [ ":*" ]
  set_sources_assignment_filter([])
  sources = [
185
    "//third_party/icu/ios/icudtl.dat",
186 187
  ]
  set_sources_assignment_filter(sources_assignment_filter)
188 189 190
  outputs = [
    "$_flutter_framework_dir/{{source_file_part}}",
  ]
191 192
}

193 194 195 196 197 198 199 200 201 202
copy("framework_podspec") {
  visibility = [ ":*" ]
  sources = [
    "framework/Flutter.podspec",
  ]
  outputs = [
    "$root_out_dir/Flutter.podspec",
  ]
}

203
group("flutter_framework") {
204 205 206 207 208 209 210
  public_deps = [
    ":framework_dylib",
    ":framework_headers",
    ":framework_icu",
    ":framework_info_plist",
    ":framework_install_name",
    ":framework_module_map",
211
    ":framework_podspec",
212 213
  ]
}