# Copyright 2013 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/config/android/config.gni")
import("$flutter_root/common/config.gni")
import("$flutter_root/shell/config.gni")
import("$flutter_root/shell/gpu/gpu.gni")

shell_gpu_configuration("android_gpu_configuration") {
  enable_software = true
  enable_vulkan = shell_enable_vulkan
  enable_gl = true
  enable_metal = false
}

shared_library("flutter_shell_native") {
  visibility = [ ":*" ]

  output_name = "flutter"

  sources = [
    "$root_build_dir/flutter_icu/icudtl.o",
    "android_context_gl.cc",
    "android_context_gl.h",
    "android_environment_gl.cc",
    "android_environment_gl.h",
    "android_external_texture_gl.cc",
    "android_external_texture_gl.h",
    "android_native_window.cc",
    "android_native_window.h",
    "android_shell_holder.cc",
    "android_shell_holder.h",
    "android_surface.cc",
    "android_surface.h",
    "android_surface_gl.cc",
    "android_surface_gl.h",
    "android_surface_software.cc",
    "android_surface_software.h",
    "apk_asset_provider.cc",
    "apk_asset_provider.h",
    "flutter_main.cc",
    "flutter_main.h",
    "library_loader.cc",
    "platform_message_response_android.cc",
    "platform_message_response_android.h",
    "platform_view_android.cc",
    "platform_view_android.h",
    "platform_view_android_jni.cc",
    "platform_view_android_jni.h",
    "vsync_waiter_android.cc",
    "vsync_waiter_android.h",
  ]

  deps = [
    ":android_gpu_configuration",
    ":icudtl_object",
    "$flutter_root/assets",
    "$flutter_root/common",
    "$flutter_root/flow",
    "$flutter_root/fml",
    "$flutter_root/lib/ui",
    "$flutter_root/runtime",
    "$flutter_root/runtime:libdart",
    "$flutter_root/shell/common",
    "//third_party/skia",
  ]

  public_configs = [ "$flutter_root:config" ]

  defines = []

  if (shell_enable_vulkan) {
    sources += [
      "android_surface_vulkan.cc",
      "android_surface_vulkan.h",
    ]

    deps += [ "$flutter_root/vulkan" ]

    defines += [ "SHELL_ENABLE_VULKAN" ]
  }

  libs = [
    "android",
    "EGL",
    "GLESv2",
  ]

  ldflags = [ "-Wl,--version-script=" + rebase_path("android_exports.lst") ]
}

action("gen_android_build_config_java") {
  script = "$flutter_root/tools/gen_android_buildconfig.py"

  build_config_java = "$target_gen_dir/io/flutter/BuildConfig.java"

  outputs = [
    build_config_java,
  ]

  args = [
    "--out",
    rebase_path(build_config_java),
    "--runtime-mode",
    flutter_runtime_mode,
  ]
}

action("flutter_shell_java") {
  script = "//build/android/gyp/javac.py"
  depfile = "$target_gen_dir/$target_name.d"

  jar_path = "$root_out_dir/flutter_java.jar"

  sources = [
    "io/flutter/Log.java",
    "io/flutter/app/FlutterActivity.java",
    "io/flutter/app/FlutterActivityDelegate.java",
    "io/flutter/app/FlutterActivityEvents.java",
    "io/flutter/app/FlutterApplication.java",
    "io/flutter/app/FlutterFragmentActivity.java",
    "io/flutter/app/FlutterPluginRegistry.java",
    "io/flutter/embedding/android/AndroidKeyProcessor.java",
    "io/flutter/embedding/android/AndroidTouchProcessor.java",
    "io/flutter/embedding/android/FlutterActivity.java",
    "io/flutter/embedding/android/FlutterFragment.java",
    "io/flutter/embedding/android/FlutterSurfaceView.java",
    "io/flutter/embedding/android/FlutterTextureView.java",
    "io/flutter/embedding/android/FlutterView.java",
    "io/flutter/embedding/engine/FlutterEngine.java",
    "io/flutter/embedding/engine/FlutterEngineAndroidLifecycle.java",
    "io/flutter/embedding/engine/FlutterEnginePluginRegistry.java",
    "io/flutter/embedding/engine/FlutterJNI.java",
    "io/flutter/embedding/engine/FlutterShellArgs.java",
    "io/flutter/embedding/engine/dart/DartExecutor.java",
    "io/flutter/embedding/engine/dart/DartMessenger.java",
    "io/flutter/embedding/engine/dart/PlatformMessageHandler.java",
    "io/flutter/embedding/engine/plugins/FlutterPlugin.java",
    "io/flutter/embedding/engine/plugins/PluginRegistry.java",
    "io/flutter/embedding/engine/plugins/activity/ActivityAware.java",
    "io/flutter/embedding/engine/plugins/activity/ActivityControlSurface.java",
    "io/flutter/embedding/engine/plugins/activity/ActivityPluginBinding.java",
    "io/flutter/embedding/engine/plugins/broadcastreceiver/BroadcastReceiverAware.java",
    "io/flutter/embedding/engine/plugins/broadcastreceiver/BroadcastReceiverControlSurface.java",
    "io/flutter/embedding/engine/plugins/broadcastreceiver/BroadcastReceiverPluginBinding.java",
    "io/flutter/embedding/engine/plugins/contentprovider/ContentProviderAware.java",
    "io/flutter/embedding/engine/plugins/contentprovider/ContentProviderControlSurface.java",
    "io/flutter/embedding/engine/plugins/contentprovider/ContentProviderPluginBinding.java",
    "io/flutter/embedding/engine/plugins/service/ServiceAware.java",
    "io/flutter/embedding/engine/plugins/service/ServiceControlSurface.java",
    "io/flutter/embedding/engine/plugins/service/ServicePluginBinding.java",
    "io/flutter/embedding/engine/plugins/shim/ShimPluginRegistry.java",
    "io/flutter/embedding/engine/plugins/shim/ShimRegistrar.java",
    "io/flutter/embedding/engine/renderer/FlutterRenderer.java",
    "io/flutter/embedding/engine/renderer/OnFirstFrameRenderedListener.java",
    "io/flutter/embedding/engine/systemchannels/AccessibilityChannel.java",
    "io/flutter/embedding/engine/systemchannels/KeyEventChannel.java",
    "io/flutter/embedding/engine/systemchannels/LifecycleChannel.java",
    "io/flutter/embedding/engine/systemchannels/LocalizationChannel.java",
    "io/flutter/embedding/engine/systemchannels/NavigationChannel.java",
    "io/flutter/embedding/engine/systemchannels/PlatformChannel.java",
    "io/flutter/embedding/engine/systemchannels/PlatformViewsChannel.java",
    "io/flutter/embedding/engine/systemchannels/SettingsChannel.java",
    "io/flutter/embedding/engine/systemchannels/SystemChannel.java",
    "io/flutter/embedding/engine/systemchannels/TextInputChannel.java",
    "io/flutter/plugin/common/ActivityLifecycleListener.java",
    "io/flutter/plugin/common/BasicMessageChannel.java",
    "io/flutter/plugin/common/BinaryCodec.java",
    "io/flutter/plugin/common/BinaryMessenger.java",
    "io/flutter/plugin/common/ErrorLogResult.java",
    "io/flutter/plugin/common/EventChannel.java",
    "io/flutter/plugin/common/FlutterException.java",
    "io/flutter/plugin/common/JSONMessageCodec.java",
    "io/flutter/plugin/common/JSONMethodCodec.java",
    "io/flutter/plugin/common/JSONUtil.java",
    "io/flutter/plugin/common/MessageCodec.java",
    "io/flutter/plugin/common/MethodCall.java",
    "io/flutter/plugin/common/MethodChannel.java",
    "io/flutter/plugin/common/MethodCodec.java",
    "io/flutter/plugin/common/PluginRegistry.java",
    "io/flutter/plugin/common/StandardMessageCodec.java",
    "io/flutter/plugin/common/StandardMethodCodec.java",
    "io/flutter/plugin/common/StringCodec.java",
    "io/flutter/plugin/editing/InputConnectionAdaptor.java",
    "io/flutter/plugin/editing/TextInputPlugin.java",
    "io/flutter/plugin/platform/AccessibilityEventsDelegate.java",
    "io/flutter/plugin/platform/PlatformPlugin.java",
    "io/flutter/plugin/platform/PlatformView.java",
    "io/flutter/plugin/platform/PlatformViewFactory.java",
    "io/flutter/plugin/platform/PlatformViewRegistry.java",
    "io/flutter/plugin/platform/PlatformViewRegistryImpl.java",
    "io/flutter/plugin/platform/PlatformViewsAccessibilityDelegate.java",
    "io/flutter/plugin/platform/PlatformViewsController.java",
    "io/flutter/plugin/platform/SingleViewPresentation.java",
    "io/flutter/plugin/platform/VirtualDisplayController.java",
    "io/flutter/util/PathUtils.java",
    "io/flutter/util/Preconditions.java",
    "io/flutter/util/Predicate.java",
    "io/flutter/view/AccessibilityBridge.java",
    "io/flutter/view/AccessibilityViewEmbedder.java",
    "io/flutter/view/FlutterCallbackInformation.java",
    "io/flutter/view/FlutterMain.java",
    "io/flutter/view/FlutterNativeView.java",
    "io/flutter/view/FlutterRunArguments.java",
    "io/flutter/view/FlutterView.java",
    "io/flutter/view/ResourceCleaner.java",
    "io/flutter/view/ResourceExtractor.java",
    "io/flutter/view/ResourcePaths.java",
    "io/flutter/view/TextureRegistry.java",
    "io/flutter/view/VsyncWaiter.java",
  ]

  sources += get_target_outputs(":gen_android_build_config_java")

  android_support_jars = [
    "//third_party/android_support/android_support_v13.jar",
    "//third_party/android_support/android_support_compat.jar",
    "//third_party/android_support/android_support_annotations.jar",
    "//third_party/android_support/android_support_fragment.jar",
    "//third_party/android_support/android_arch_lifecycle_common.jar",
    "//third_party/android_support/android_arch_lifecycle_common_java8.jar",
    "//third_party/android_support/android_arch_lifecycle_runtime.jar",
    "//third_party/android_support/android_arch_lifecycle_viewmodel.jar",
  ]

  outputs = [
    depfile,
    jar_path,
    jar_path + ".md5.stamp",
  ]
  inputs = [
    android_sdk_jar,
  ]
  inputs += android_support_jars

  _rebased_jar_path = rebase_path(jar_path, root_build_dir)
  _rebased_depfile = rebase_path(depfile, root_build_dir)
  _rebased_android_sdk_jar = rebase_path(android_sdk_jar, root_build_dir)
  _rebased_classpath = [ _rebased_android_sdk_jar ] +
                       rebase_path(android_support_jars, root_build_dir)

  args = [
    "--depfile=$_rebased_depfile",
    "--jar-path=$_rebased_jar_path",
    "--classpath=$_rebased_classpath",
    "--bootclasspath=$_rebased_android_sdk_jar",
  ]

  args += rebase_path(sources, root_build_dir)

  deps = [
    ":gen_android_build_config_java",
  ]
}

action("icudtl_object") {
  script = "$flutter_root/sky/tools/objcopy.py"

  icudtl_input = "//third_party/icu/flutter/icudtl.dat"
  icudtl_output = "$root_build_dir/flutter_icu/icudtl.o"

  inputs = [
    "$icudtl_input",
  ]

  outputs = [
    "$icudtl_output",
  ]

  args = [
    "--objcopy",
    rebase_path(android_objcopy),
    "--input",
    rebase_path(icudtl_input),
    "--output",
    rebase_path(icudtl_output),
    "--arch",
    current_cpu,
  ]
}

action("android") {
  script = "//build/android/gyp/create_flutter_jar.py"

  inputs = [
    "$root_build_dir/flutter_java.jar",
    "$root_build_dir/lib.stripped/libflutter.so",
  ]

  outputs = [
    "$root_build_dir/flutter.jar",
  ]

  args = [
    "--output",
    rebase_path("flutter.jar", root_build_dir, root_build_dir),
    "--dist_jar",
    rebase_path("flutter_java.jar", root_build_dir, root_build_dir),
    "--native_lib",
    rebase_path("lib.stripped/libflutter.so", root_build_dir, root_build_dir),
    "--android_abi",
    "$android_app_abi",
  ]

  deps = [
    ":flutter_shell_java",
    ":flutter_shell_native",
  ]
}
