| # 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. | 
 |  | 
 | common_deps = [ | 
 |   "//base", | 
 |   "//base:i18n", | 
 |   "//build/config/sanitizers:deps", | 
 |   "//dart/runtime:libdart", | 
 |   "//mojo/data_pipe_utils", | 
 |   "//mojo/edk/system", | 
 |   "//mojo/message_pump", | 
 |   "//mojo/public/cpp/application", | 
 |   "//mojo/public/interfaces/application", | 
 |   "//mojo/services/asset_bundle/interfaces", | 
 |   "//mojo/services/keyboard/interfaces", | 
 |   "//mojo/services/navigation/interfaces", | 
 |   "//mojo/services/network/public/interfaces", | 
 |   "//services/asset_bundle:lib", | 
 |   "//skia", | 
 |   "//sky/compositor", | 
 |   "//sky/engine", | 
 |   "//sky/engine/tonic", | 
 |   "//sky/engine/wtf", | 
 |   "//sky/services/engine:interfaces", | 
 |   "//sky/services/vsync:interfaces", | 
 |   "//sky/shell/dart", | 
 |   "//ui/gfx/geometry", | 
 |   "//ui/gl", | 
 |   "//url:url", | 
 | ] | 
 |  | 
 | if (is_linux || is_mac) { | 
 |  | 
 |   testing_sources = [ | 
 |     "testing/test_runner.cc", | 
 |     "testing/test_runner.h", | 
 |     "testing/testing.cc", | 
 |     "testing/testing.h", | 
 |   ] | 
 |  | 
 | } | 
 |  | 
 | source_set("common") { | 
 |   sources = [ | 
 |     "gpu/ganesh_context.cc", | 
 |     "gpu/ganesh_context.h", | 
 |     "gpu/ganesh_surface.cc", | 
 |     "gpu/ganesh_surface.h", | 
 |     "gpu/rasterizer.cc", | 
 |     "gpu/rasterizer.h", | 
 |     "gpu_delegate.cc", | 
 |     "gpu_delegate.h", | 
 |     "platform_view.cc", | 
 |     "platform_view.h", | 
 |     "service_provider.cc", | 
 |     "service_provider.h", | 
 |     "shell.cc", | 
 |     "shell.h", | 
 |     "shell_view.cc", | 
 |     "shell_view.h", | 
 |     "switches.cc", | 
 |     "switches.h", | 
 |     "tracing_controller.cc", | 
 |     "tracing_controller.h", | 
 |     "ui/animator.cc", | 
 |     "ui/animator.h", | 
 |     "ui/engine.cc", | 
 |     "ui/engine.h", | 
 |     "ui/input_event_converter.cc", | 
 |     "ui/input_event_converter.h", | 
 |     "ui/internals.cc", | 
 |     "ui/internals.h", | 
 |     "ui/platform_impl.cc", | 
 |     "ui/platform_impl.h", | 
 |     "ui_delegate.cc", | 
 |     "ui_delegate.h", | 
 |   ] | 
 |  | 
 |   deps = common_deps | 
 | } | 
 |  | 
 | if (is_android) { | 
 |   import("//build/config/android/config.gni") | 
 |   import("//build/config/android/rules.gni") | 
 |  | 
 |   generate_jni("jni_headers") { | 
 |     sources = [ | 
 |       "android/org/domokit/sky/shell/PlatformServiceProvider.java", | 
 |       "android/org/domokit/sky/shell/PlatformViewAndroid.java", | 
 |       "android/org/domokit/sky/shell/SkyMain.java", | 
 |       "android/org/domokit/sky/shell/TracingController.java", | 
 |       "android/org/domokit/sky/shell/UpdateService.java", | 
 |     ] | 
 |     jni_package = "sky/shell" | 
 |   } | 
 |  | 
 |   shared_library("sky_shell") { | 
 |     sources = [ | 
 |       "android/library_loader.cc", | 
 |       "android/platform_service_provider_android.cc", | 
 |       "android/platform_service_provider_android.h", | 
 |       "android/platform_view_android.cc", | 
 |       "android/platform_view_android.h", | 
 |       "android/sky_main.cc", | 
 |       "android/sky_main.h", | 
 |       "android/tracing_controller.cc", | 
 |       "android/tracing_controller.h", | 
 |       "android/update_service_android.cc", | 
 |     ] | 
 |  | 
 |     deps = common_deps + [ | 
 |              "//mojo/android:libsystem_java", | 
 |              ":jni_headers", | 
 |              ":common", | 
 |            ] | 
 |     ldflags = [ | 
 |       "-lGLESv2", | 
 |       "-lEGL", | 
 |     ] | 
 |   } | 
 |  | 
 |   android_library("java") { | 
 |     java_files = [ | 
 |       "android/org/domokit/sky/shell/PlatformServiceProvider.java", | 
 |       "android/org/domokit/sky/shell/PlatformViewAndroid.java", | 
 |       "android/org/domokit/sky/shell/ResourceCleaner.java", | 
 |       "android/org/domokit/sky/shell/ResourceExtractor.java", | 
 |       "android/org/domokit/sky/shell/ServiceFactory.java", | 
 |       "android/org/domokit/sky/shell/ServiceRegistry.java", | 
 |       "android/org/domokit/sky/shell/SkyActivity.java", | 
 |       "android/org/domokit/sky/shell/SkyApplication.java", | 
 |       "android/org/domokit/sky/shell/SkyMain.java", | 
 |       "android/org/domokit/sky/shell/TracingController.java", | 
 |       "android/org/domokit/sky/shell/UpdateService.java", | 
 |     ] | 
 |  | 
 |     deps = [ | 
 |       "//base:base_java", | 
 |       "//mojo/android:system_java", | 
 |       "//mojo/public/interfaces/application:application_java", | 
 |       "//mojo/public/java:bindings", | 
 |       "//mojo/public/java:system", | 
 |       "//mojo/services/keyboard/interfaces:interfaces_java", | 
 |       "//mojo/services/network/public/interfaces:interfaces_java", | 
 |       "//mojo/services/sensors/interfaces:interfaces_java", | 
 |       "//services/keyboard", | 
 |       "//services/sensors:sensors_lib", | 
 |       "//sky/services/activity:activity_lib", | 
 |       "//sky/services/activity:interfaces_java", | 
 |       "//sky/services/engine:interfaces_java", | 
 |       "//sky/services/media:interfaces_java", | 
 |       "//sky/services/media:media_lib", | 
 |       "//sky/services/oknet", | 
 |       "//sky/services/updater:interfaces_java", | 
 |       "//sky/services/vsync:interfaces_java", | 
 |       "//sky/services/vsync:vsync_lib", | 
 |     ] | 
 |   } | 
 |  | 
 |   copy_ex("assets") { | 
 |     clear_dir = true | 
 |     dest = "$root_build_dir/sky_shell/assets" | 
 |     sources = [ | 
 |       "$root_build_dir/icudtl.dat", | 
 |     ] | 
 |     deps = [ | 
 |       "//third_party/icu:icudata", | 
 |     ] | 
 |   } | 
 |  | 
 |   android_apk("shell") { | 
 |     apk_name = "SkyShell" | 
 |     android_manifest = "android/AndroidManifest.xml" | 
 |  | 
 |     native_libs = [ "libsky_shell.so" ] | 
 |     asset_location = "$root_build_dir/sky_shell/assets" | 
 |  | 
 |     extensions_to_not_compress = ".flx" | 
 |  | 
 |     deps = [ | 
 |       ":assets", | 
 |       ":assets", | 
 |       ":java", | 
 |       ":sky_shell", | 
 |       "//base:base_java", | 
 |     ] | 
 |   } | 
 | } else if (is_ios) { | 
 |   import("//build/config/ios/rules.gni") | 
 |   import("//build/config/ios/ios_sdk.gni") | 
 |  | 
 |   source_set("ios_scaffolding") { | 
 |     sources = [ | 
 |       "ios/document_watcher.m", | 
 |       "ios/main_ios.mm", | 
 |       "ios/sky_app_delegate.h", | 
 |       "ios/sky_app_delegate.mm", | 
 |       "ios/sky_surface.h", | 
 |       "ios/sky_surface.mm", | 
 |       "ios/sky_view_controller.h", | 
 |       "ios/sky_view_controller.mm", | 
 |     ] | 
 |  | 
 |     set_sources_assignment_filter([]) | 
 |     sources += [ | 
 |       "mac/platform_mac.h", | 
 |       "mac/platform_mac.mm", | 
 |       "mac/platform_service_provider_mac.cc", | 
 |       "mac/platform_view_mac.h", | 
 |       "mac/platform_view_mac.mm", | 
 |     ] | 
 |     set_sources_assignment_filter(sources_assignment_filter) | 
 |  | 
 |     deps = common_deps + [ | 
 |              ":common", | 
 |              "//sky/services/keyboard", | 
 |              "//sky/services/media", | 
 |              "//sky/services/ns_net", | 
 |              "//sky/services/vsync", | 
 |            ] | 
 |   } | 
 |  | 
 |   ios_app("shell") { | 
 |     app_name = "SkyShell" | 
 |     info_plist = "ios/Info.plist" | 
 |     entitlements_path = "ios/Entitlements.xcent" | 
 |     code_signing_identity = ios_code_signing_identity | 
 |  | 
 |     resource_copy_ios("sky_resources") { | 
 |       resources = [ "//third_party/icu/android/icudtl.dat" ] | 
 |       bundle_directory = "." | 
 |     } | 
 |  | 
 |     deps = [ | 
 |       ":ios_scaffolding", | 
 |       ":sky_resources", | 
 |     ] | 
 |   } | 
 | } else if (is_linux) { | 
 |   executable("shell") { | 
 |     output_name = "sky_shell" | 
 |  | 
 |     sources = [ | 
 |       "linux/main_linux.cc", | 
 |       "linux/platform_service_provider_linux.cc", | 
 |       "linux/platform_view_linux.cc", | 
 |     ] + testing_sources | 
 |  | 
 |     deps = common_deps + [ | 
 |              ":common", | 
 |              "//mojo/common", | 
 |            ] | 
 |   } | 
 | } else if (is_mac) { | 
 |   import("//build/config/mac/rules.gni") | 
 |  | 
 |   source_set("mac_scaffolding") { | 
 |     sources = [ | 
 |       "mac/main_mac.mm", | 
 |       "mac/platform_mac.h", | 
 |       "mac/platform_mac.mm", | 
 |       "mac/platform_service_provider_mac.cc", | 
 |       "mac/platform_view_mac.h", | 
 |       "mac/platform_view_mac.mm", | 
 |       "mac/sky_app_delegate.h", | 
 |       "mac/sky_app_delegate.m", | 
 |       "mac/sky_application.h", | 
 |       "mac/sky_application.mm", | 
 |       "mac/sky_window.h", | 
 |       "mac/sky_window.mm", | 
 |     ] + testing_sources | 
 |  | 
 |     deps = common_deps + [ | 
 |              ":common", | 
 |              "//mojo/common", | 
 |              "//sky/services/ns_net", | 
 |            ] | 
 |   } | 
 |  | 
 |   mac_app("shell") { | 
 |     app_name = "SkyShell" | 
 |     info_plist = "mac/Info.plist" | 
 |  | 
 |     # entitlements_path = "" | 
 |     # code_signing_identity = "" | 
 |  | 
 |     xibs = [ "mac/sky_mac.xib" ] | 
 |  | 
 |     resource_copy_mac("sky_resources") { | 
 |       resources = [ | 
 |         "//third_party/icu/android/icudtl.dat", | 
 |         "ios/LaunchScreen.storyboardc" | 
 |       ] | 
 |       bundle_directory = "." | 
 |     } | 
 |  | 
 |     deps = [ | 
 |       ":mac_scaffolding", | 
 |       ":sky_resources", | 
 |     ] | 
 |   } | 
 | } else { | 
 |   assert(false, "Unsupported platform") | 
 | } |