BUILD.gn 13.8 KB
Newer Older
1 2 3 4
# Copyright 2015 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.

A
Adam Barth 已提交
5
import("//build/config/ui.gni")
6 7 8 9
import("//mojo/dart/embedder/embedder.gni")

dart_embedder_resources("generate_sky_embedder_diagnostic_server_resources_cc") {
  inputs = [
10
    "//flutter/sky/shell/diagnostic/diagnostic_server.dart"
11
  ]
12
  root_prefix = "//flutter/sky/shell/diagnostic/"
13 14 15
  output = "$target_gen_dir/sky_embedder_diagnostic_server_resources.cc"
  table_name = "sky_embedder_diagnostic_server"
}
A
Adam Barth 已提交
16

17 18
source_set("common") {
  sources = [
19
    "$target_gen_dir/sky_embedder_diagnostic_server_resources.cc",
20 21
    "diagnostic/diagnostic_server.cc",
    "diagnostic/diagnostic_server.h",
22 23
    "gpu/picture_serializer.cc",
    "gpu/picture_serializer.h",
24 25
    "platform_view.cc",
    "platform_view.h",
26 27
    "platform_view_service_protocol.cc",
    "platform_view_service_protocol.h",
28 29
    "rasterizer.cc",
    "rasterizer.h",
30 31
    "shell.cc",
    "shell.h",
32 33
    "switches.cc",
    "switches.h",
34 35
    "tracing_controller.cc",
    "tracing_controller.h",
36 37 38 39
    "ui/animator.cc",
    "ui/animator.h",
    "ui/engine.cc",
    "ui/engine.h",
J
Jason Simmons 已提交
40 41
    "ui/flutter_font_selector.cc",
    "ui/flutter_font_selector.h",
A
Adam Barth 已提交
42 43
    "ui/platform_impl.cc",
    "ui/platform_impl.h",
44 45 46 47
    "ui_delegate.cc",
    "ui_delegate.h",
  ]

48
  public_deps = [
49
    "//base",
50
    "//base:i18n",
A
Adam Barth 已提交
51
    "//build/config/sanitizers:deps",
52
    "//dart/runtime:libdart",
53
    "//flutter/assets",
54
    "//flutter/common",
55 56
    "//flutter/flow",
    "//flutter/glue",
57 58 59 60 61 62 63
    "//flutter/lib/ui",
    "//flutter/runtime",
    "//flutter/services/editing:interfaces",
    "//flutter/services/engine:interfaces",
    "//flutter/services/platform",
    "//flutter/services/pointer:interfaces",
    "//flutter/services/semantics:interfaces",
64
    "//flutter/services/vsync:vsync_lib_fallback",
65 66 67 68
    "//flutter/skia",
    "//flutter/sky/engine",
    "//flutter/sky/engine/core:core",
    "//flutter/sky/engine/wtf",
69
    "//flutter/synchronization",
A
Adam Barth 已提交
70
    "//lib/ftl",
71
    "//lib/tonic",
A
Adam Barth 已提交
72 73 74 75
    "//mojo/common",
    "//mojo/data_pipe_utils",
    "//mojo/message_pump",
    "//mojo/public/cpp/application",
M
mikejurka 已提交
76
    "//mojo/public/cpp/bindings:utility",
A
Adam Barth 已提交
77 78
    "//mojo/public/interfaces/application",
    "//mojo/services/asset_bundle/interfaces",
A
Adam Barth 已提交
79
    "//mojo/services/gfx/composition/interfaces",
A
Adam Barth 已提交
80
    "//mojo/services/navigation/interfaces",
A
Adam Barth 已提交
81
    "//mojo/services/vsync/interfaces",
82
    ":generate_sky_embedder_diagnostic_server_resources_cc",
A
Adam Barth 已提交
83 84 85 86 87
  ]
}

source_set("gpu_direct") {
  sources = [
88 89
    "gpu/direct/ganesh_canvas.cc",
    "gpu/direct/ganesh_canvas.h",
90 91
    "gpu/direct/rasterizer_direct.cc",
    "gpu/direct/rasterizer_direct.h",
A
Adam Barth 已提交
92 93 94
  ]

  deps = [
95
    ":common",
A
Adam Barth 已提交
96 97 98 99 100 101 102
  ]
}

if (is_linux || is_mac) {

  source_set("testing") {
    sources = [
103 104
      "testing/platform_view_test.cc",
      "testing/platform_view_test.h",
A
Adam Barth 已提交
105 106 107 108 109 110 111 112 113 114 115
      "testing/test_runner.cc",
      "testing/test_runner.h",
      "testing/testing.cc",
      "testing/testing.h",
    ]

    deps = [
      ":common",
    ]
  }

116 117
}

118 119 120
if (is_android) {
  import("//build/config/android/config.gni")
  import("//build/config/android/rules.gni")
121

122 123
  generate_jni("jni_headers") {
    sources = [
124 125
      "platform/android/io/flutter/view/FlutterView.java",
      "platform/android/io/flutter/view/FlutterMain.java",
126 127 128
    ]
    jni_package = "sky/shell"
  }
129

130 131
  shared_library("sky_shell") {
    sources = [
132 133
      "platform/android/flutter_main.cc",
      "platform/android/flutter_main.h",
134 135 136
      "platform/android/library_loader.cc",
      "platform/android/platform_view_android.cc",
      "platform/android/platform_view_android.h",
137
    ]
138

A
Adam Barth 已提交
139
    deps = [
140 141 142 143
      ":common",
      ":gpu_direct",
      ":jni_headers",
      "//flutter/lib/jni",
A
Adam Barth 已提交
144
      "//mojo/android:libsystem_java",
145
      "//mojo/edk/base_edk",
A
Adam Barth 已提交
146 147 148
      "//mojo/edk/system",
    ]

149
    ldflags = [
150
      "-landroid",
151
      "-lEGL",
152
      "-lGLESv2",
153
    ]
154
  }
155

156 157
  android_library("java") {
    java_files = [
158 159 160 161 162 163 164 165
      "platform/android/io/flutter/view/AccessibilityBridge.java",
      "platform/android/io/flutter/view/FlutterMain.java",
      "platform/android/io/flutter/view/FlutterView.java",
      "platform/android/io/flutter/view/ResourceCleaner.java",
      "platform/android/io/flutter/view/ResourceExtractor.java",
      "platform/android/io/flutter/view/ServiceFactory.java",
      "platform/android/io/flutter/view/ServiceProviderImpl.java",
      "platform/android/io/flutter/view/ServiceRegistry.java",
166 167
      "platform/android/org/domokit/sky/shell/SkyActivity.java",
      "platform/android/org/domokit/sky/shell/SkyApplication.java",
168
    ]
169

170 171 172 173 174 175
    deps = [
      "//base:base_java",
      "//mojo/android:system_java",
      "//mojo/public/interfaces/application:application_java",
      "//mojo/public/java:bindings",
      "//mojo/public/java:system",
176
      "//mojo/services/network/interfaces:interfaces_java",
177
      "//mojo/services/sensors/interfaces:interfaces_java",
A
Adam Barth 已提交
178
      "//mojo/services/vsync/interfaces:interfaces_java",
179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195
      "//flutter/services/sensors:sensors_lib",
      "//flutter/services/activity:activity_lib",
      "//flutter/services/activity:interfaces_java",
      "//flutter/services/common:common_lib",
      "//flutter/services/editing:editing_lib",
      "//flutter/services/editing:interfaces_java",
      "//flutter/services/engine:interfaces_java",
      "//flutter/services/media:interfaces_java",
      "//flutter/services/media:media_lib",
      "//flutter/services/oknet",
      "//flutter/services/platform:interfaces_java",
      "//flutter/services/platform:platform_lib",
      "//flutter/services/pointer:interfaces_java",
      "//flutter/services/raw_keyboard:interfaces_java",
      "//flutter/services/raw_keyboard:raw_keyboard_lib",
      "//flutter/services/semantics:interfaces_java",
      "//flutter/services/vsync:vsync_lib",
196 197 198 199 200 201 202 203 204 205
    ]
  }

  copy_ex("assets") {
    clear_dir = true
    dest = "$root_build_dir/sky_shell/assets"
    sources = [
      "$root_build_dir/icudtl.dat",
    ]
    deps = [
206
      "//third_party/icu:icudata",
207 208
    ]
  }
A
Adam Barth 已提交
209 210 211

  android_apk("shell") {
    apk_name = "SkyShell"
212
    android_manifest = "platform/android/AndroidManifest.xml"
A
Adam Barth 已提交
213 214 215 216

    native_libs = [ "libsky_shell.so" ]
    asset_location = "$root_build_dir/sky_shell/assets"

I
Ian Fischer 已提交
217
    extensions_to_not_compress = ".flx"
A
Adam Barth 已提交
218

219 220
    flutter_dist_jar = "$root_build_dir/flutter.jar"

A
Adam Barth 已提交
221
    deps = [
222
      "//base:base_java",
A
Adam Barth 已提交
223 224 225 226 227
      ":assets",
      ":java",
      ":sky_shell",
    ]
  }
228 229 230 231
} else if (is_ios) {
  import("//build/config/ios/rules.gni")
  import("//build/config/ios/ios_sdk.gni")

232 233
  shared_library("flutter_framework_dylib") {
    output_name = "Flutter"
234

A
Adam Barth 已提交
235 236 237 238 239 240 241 242 243 244 245 246
    sources = [
      "platform/ios/framework/Headers/Flutter.h",
      "platform/ios/framework/Headers/FlutterAppDelegate.h",
      "platform/ios/framework/Headers/FlutterAsyncMessageListener.h",
      "platform/ios/framework/Headers/FlutterDartProject.h",
      "platform/ios/framework/Headers/FlutterMacros.h",
      "platform/ios/framework/Headers/FlutterMessageListener.h",
      "platform/ios/framework/Headers/FlutterViewController.h",
      "platform/ios/framework/Source/accessibility_bridge.h",
      "platform/ios/framework/Source/accessibility_bridge.mm",
      "platform/ios/framework/Source/application_messages_impl.h",
      "platform/ios/framework/Source/application_messages_impl.mm",
247 248
      "platform/ios/framework/Source/flutter_touch_mapper.h",
      "platform/ios/framework/Source/flutter_touch_mapper.mm",
A
Adam Barth 已提交
249 250 251 252 253 254 255 256 257 258
      "platform/ios/framework/Source/FlutterAppDelegate.mm",
      "platform/ios/framework/Source/FlutterDartProject.mm",
      "platform/ios/framework/Source/FlutterDartProject_Internal.h",
      "platform/ios/framework/Source/FlutterDartSource.h",
      "platform/ios/framework/Source/FlutterDartSource.mm",
      "platform/ios/framework/Source/FlutterDynamicServiceLoader.h",
      "platform/ios/framework/Source/FlutterDynamicServiceLoader.mm",
      "platform/ios/framework/Source/FlutterView.h",
      "platform/ios/framework/Source/FlutterView.mm",
      "platform/ios/framework/Source/FlutterViewController.mm",
259 260
      "platform/ios/platform_view_ios.h",
      "platform/ios/platform_view_ios.mm",
A
Adam Barth 已提交
261 262 263 264 265 266 267 268 269 270 271 272
    ]

    set_sources_assignment_filter([])
    sources += [
      "platform/mac/platform_mac.h",
      "platform/mac/platform_mac.mm",
      "platform/mac/platform_service_provider.cc",
      "platform/mac/platform_service_provider.h",
      "platform/mac/view_service_provider.cc",
      "platform/mac/view_service_provider.h",
    ]
    set_sources_assignment_filter(sources_assignment_filter)
273

274
    deps = [
A
Adam Barth 已提交
275 276
      "//mojo/edk/base_edk",
      "//mojo/edk/system",
277 278 279 280 281 282 283 284
      "//flutter/skia",
      "//flutter/services/activity",
      "//flutter/services/dynamic:embedder",
      "//flutter/services/editing",
      "//flutter/services/media",
      "//flutter/services/ns_net",
      "//flutter/services/semantics",
      "//flutter/services/vsync",
A
Adam Barth 已提交
285 286 287 288 289 290
      ":common",
      ":gpu_direct",
    ]

    defines = [
      "FLUTTER_FRAMEWORK"
291 292 293 294 295 296 297 298 299 300 301
    ]

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

A
Adam Barth 已提交
302 303
  group("flutter_framework") {
    framework_dir = "$root_out_dir/Flutter.framework"
304

A
Adam Barth 已提交
305 306 307
    copy("framework_dylib") {
      sources = [ "$root_out_dir/libFlutter.dylib" ]
      outputs = [ "$framework_dir/Flutter" ]
308

A
Adam Barth 已提交
309 310 311 312
      deps = [
        ":flutter_framework_dylib",
      ]
    }
313

A
Adam Barth 已提交
314 315
    action("framework_install_name") {
      stamp_file = "$root_out_dir/flutter_install_name_stamp"
316
      script = "//flutter/sky/tools/change_install_name.py"
317

A
Adam Barth 已提交
318 319
      inputs = [ "$framework_dir/Flutter" ]
      outputs = [ stamp_file ]
320

A
Adam Barth 已提交
321 322 323 324 325 326 327 328
      args = [
        "--dylib",
        rebase_path("$framework_dir/Flutter"),
        "--install_name",
        "@rpath/Flutter.framework/Flutter",
        "--stamp",
        rebase_path(stamp_file),
      ]
329

A
Adam Barth 已提交
330 331 332 333
      deps = [
        ":framework_dylib"
      ]
    }
334

A
Adam Barth 已提交
335 336 337 338
    copy("framework_info_plist") {
      sources = [ "platform/ios/framework/Info.plist" ]
      outputs = [ "$framework_dir/Info.plist" ]
    }
339

A
Adam Barth 已提交
340 341 342 343
    copy("framework_module_map") {
      sources = [ "platform/ios/framework/module.modulemap" ]
      outputs = [ "$framework_dir/Modules/module.modulemap" ]
    }
344

A
Adam Barth 已提交
345 346 347 348 349 350 351 352 353 354 355 356
    copy("framework_headers") {
      sources = [
        "platform/ios/framework/Headers/Flutter.h",
        "platform/ios/framework/Headers/FlutterAppDelegate.h",
        "platform/ios/framework/Headers/FlutterAsyncMessageListener.h",
        "platform/ios/framework/Headers/FlutterDartProject.h",
        "platform/ios/framework/Headers/FlutterMacros.h",
        "platform/ios/framework/Headers/FlutterMessageListener.h",
        "platform/ios/framework/Headers/FlutterViewController.h",
      ]
      outputs = [ "$framework_dir/Headers/{{source_file_part}}" ]
    }
357

A
Adam Barth 已提交
358 359 360 361 362 363 364 365
    copy("framework_icu") {
      set_sources_assignment_filter([])
      sources = [
        "//third_party/icu/android/icudtl.dat",
      ]
      set_sources_assignment_filter(sources_assignment_filter)
      outputs = [ "$framework_dir/{{source_file_part}}" ]
    }
366

367 368
    public_deps = [
      ":framework_dylib",
369 370
      ":framework_headers",
      ":framework_icu",
371
      ":framework_info_plist",
372
      ":framework_install_name",
373 374 375 376
      ":framework_module_map",
    ]
  }

377
  group("shell") {
378
  }
379
} else if (is_linux) {
A
Adam Barth 已提交
380 381 382 383
  executable("shell") {
    output_name = "sky_shell"

    sources = [
384
      "platform/linux/main_linux.cc",
A
Adam Barth 已提交
385
    ]
A
Adam Barth 已提交
386

A
Adam Barth 已提交
387 388
    deps = [
      "//mojo/common",
389
      "//mojo/edk/base_edk",
A
Adam Barth 已提交
390 391 392 393 394
      "//mojo/edk/system",
      ":common",
      ":gpu_direct",
      ":testing",
    ]
A
Adam Barth 已提交
395

396 397 398 399
    ldflags = [
      "-lGL",
    ]

A
Adam Barth 已提交
400 401
    if (use_glfw) {
      sources += [
402 403 404 405 406 407 408 409
        "//flutter/sky/shell/platform/glfw/init_glfw.cc",
        "//flutter/sky/shell/platform/glfw/init_glfw.h",
        "//flutter/sky/shell/platform/glfw/message_pump_glfw.cc",
        "//flutter/sky/shell/platform/glfw/message_pump_glfw.h",
        "//flutter/sky/shell/platform/glfw/platform_view_glfw.cc",
        "//flutter/sky/shell/platform/glfw/platform_view_glfw.h",
        "//flutter/sky/shell/platform/glfw/window_impl.cc",
        "//flutter/sky/shell/platform/glfw/window_impl.h",
A
Adam Barth 已提交
410 411
      ]

412
      deps += [
413
        "//flutter/services/raw_keyboard:interfaces",
414 415 416
        "//third_party/glfw",
        "//ui/gl",
      ]
A
Adam Barth 已提交
417 418 419
    } else {
      sources += [ "platform/linux/platform_view_linux.cc" ]
    }
420 421 422 423
  }
} else if (is_mac) {
  import("//build/config/mac/rules.gni")

424 425
  source_set("mac_scaffolding") {
    sources = [
426 427 428
      "platform/mac/main_mac.mm",
      "platform/mac/platform_mac.h",
      "platform/mac/platform_mac.mm",
429 430
      "platform/mac/platform_service_provider.cc",
      "platform/mac/platform_service_provider.h",
431 432 433 434 435 436 437 438
      "platform/mac/platform_view_mac.h",
      "platform/mac/platform_view_mac.mm",
      "platform/mac/sky_app_delegate.h",
      "platform/mac/sky_app_delegate.m",
      "platform/mac/sky_application.h",
      "platform/mac/sky_application.mm",
      "platform/mac/sky_window.h",
      "platform/mac/sky_window.mm",
439 440
      "platform/mac/view_service_provider.cc",
      "platform/mac/view_service_provider.h",
A
Adam Barth 已提交
441 442 443 444
    ]

    deps = [
      "//mojo/common",
445
      "//mojo/edk/base_edk",
A
Adam Barth 已提交
446
      "//mojo/edk/system",
447 448
      "//flutter/services/ns_net",
      "//flutter/services/vsync",
A
Adam Barth 已提交
449 450 451 452
      ":common",
      ":gpu_direct",
      ":testing",
    ]
453 454
  }

455 456 457 458 459 460 461 462
  executable("shell_standalone") {
    output_name = "sky_shell"
    deps = [
      ":mac_scaffolding",
    ]
  }

  mac_app("shell_application") {
E
Eric Seidel 已提交
463
    app_name = "SkyShell"
464
    info_plist = "platform/mac/Info.plist"
465

466
    xibs = [ "platform/mac/sky_mac.xib" ]
467

A
Adam Barth 已提交
468 469 470 471 472 473 474
    resource_copy_mac("sky_resources") {
      resources = [
        "//third_party/icu/android/icudtl.dat",
      ]
      bundle_directory = "."
    }

475
    deps = [
476
      ":mac_scaffolding",
477 478
      ":sky_resources",
    ]
A
Adam Barth 已提交
479
  }
480 481 482 483 484 485 486

  group("shell") {
    deps = [
      ":shell_application",
      ":shell_standalone",
    ]
  }
487 488
} else {
  assert(false, "Unsupported platform")
A
Adam Barth 已提交
489
}