# 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.

assert(is_android)

import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")

group("shell") {
  deps = [
    ":sky_shell_apk",
  ]
}

generate_jni("jni_headers") {
  sources = [
    "apk/src/org/domokit/sky/shell/JavaServiceProvider.java",
    "apk/src/org/domokit/sky/shell/SkyMain.java",
    "apk/src/org/domokit/sky/shell/PlatformView.java",
  ]
  jni_package = "sky/shell"
}

shared_library("sky_shell") {
  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",
    "java_service_provider.cc",
    "java_service_provider.h",
    "library_loader.cc",
    "platform_view.cc",
    "platform_view.h",
    "shell.cc",
    "shell.h",
    "sky_main.cc",
    "sky_main.h",
    "ui/animator.cc",
    "ui/animator.h",
    "ui/engine.cc",
    "ui/engine.h",
    "ui/input_event_converter.cc",
    "ui/input_event_converter.h",
    "ui/platform_impl.cc",
    "ui/platform_impl.h",
    "ui_delegate.cc",
    "ui_delegate.h",
  ]

  deps = [
    "//base",
    "//base:i18n",
    "//build/config/sanitizers:deps",
    "//mojo/android:libsystem_java",
    "//mojo/common",
    "//mojo/edk/system",
    "//mojo/public/cpp/application",
    "//mojo/public/interfaces/application",
    "//mojo/services/network/public/interfaces",
    "//skia",
    "//sky/engine",
    "//sky/services/viewport",
    "//ui/gfx/geometry",
    "//ui/gl",
    ":jni_headers",
  ]
}

android_library("java") {
  java_files = [
    "apk/src/org/domokit/sky/shell/JavaServiceProvider.java",
    "apk/src/org/domokit/sky/shell/PlatformView.java",
    "apk/src/org/domokit/sky/shell/SkyMain.java",
    "apk/src/org/domokit/sky/shell/SkyShellActivity.java",
    "apk/src/org/domokit/sky/shell/SkyShellApplication.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/network/public/interfaces:interfaces_java",
    "//sky/services/oknet",
    "//sky/services/viewport:viewport_java",
  ]
}

sky_shell_assets_dir = "$root_build_dir/sky_shell/assets"

android_resources("resources") {
  resource_dirs = [ "apk/res" ]
  custom_package = "org.domokit.sky.shell"
}

copy_ex("assets") {
  clear_dir = true
  dest = sky_shell_assets_dir
  sources = [
    "$root_build_dir/icudtl.dat",
  ]
  deps = [
    "//third_party/icu",
  ]
}

android_apk("sky_shell_apk") {
  apk_name = "SkyShell"

  android_manifest = "apk/AndroidManifest.xml"
  native_libs = [ "libsky_shell.so" ]

  asset_location = sky_shell_assets_dir

  deps = [
    "//base:base_java",
    ":assets",
    ":java",
    ":resources",
    ":sky_shell",
  ]
}
