# 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/build/zip_bundle.gni")
import("//flutter/common/config.gni")
import("//flutter/shell/config.gni")
import("//flutter/shell/gpu/gpu.gni")
import("//flutter/shell/version/version.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_shell_holder.cc",
    "android_shell_holder.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_impl.cc",
    "platform_view_android_jni_impl.h",
    "vsync_waiter_android.cc",
    "vsync_waiter_android.h",
  ]

  deps = [
    ":android_gpu_configuration",
    ":icudtl_object",
    "//flutter/assets",
    "//flutter/common",
    "//flutter/flow",
    "//flutter/fml",
    "//flutter/lib/ui",
    "//flutter/runtime",
    "//flutter/runtime:libdart",
    "//flutter/shell/common",
    "//flutter/shell/platform/android/context",
    "//flutter/shell/platform/android/external_view_embedder",
    "//flutter/shell/platform/android/jni",
    "//flutter/shell/platform/android/platform_view_android_delegate",
    "//flutter/shell/platform/android/surface",
    "//flutter/shell/platform/android/surface:native_window",
    "//third_party/skia",
  ]

  public_configs = [ "//flutter:config" ]

  defines = []

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

    deps += [ "//flutter/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/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,
  ]
}

embedding_artifact_id = "flutter_embedding_$flutter_runtime_mode"
embedding_jar_filename = "$embedding_artifact_id.jar"
embedding_jar_path = "$root_out_dir/$embedding_jar_filename"

embedding_sources_jar_filename = "$embedding_artifact_id-sources.jar"
embedding_source_jar_path = "$root_out_dir/$embedding_sources_jar_filename"

android_java_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/DrawableSplashScreen.java",
  "io/flutter/embedding/android/FlutterActivity.java",
  "io/flutter/embedding/android/FlutterActivityAndFragmentDelegate.java",
  "io/flutter/embedding/android/FlutterActivityLaunchConfigs.java",
  "io/flutter/embedding/android/FlutterEngineConfigurator.java",
  "io/flutter/embedding/android/FlutterEngineProvider.java",
  "io/flutter/embedding/android/FlutterFragment.java",
  "io/flutter/embedding/android/FlutterFragmentActivity.java",
  "io/flutter/embedding/android/FlutterImageView.java",
  "io/flutter/embedding/android/FlutterSplashView.java",
  "io/flutter/embedding/android/FlutterSurfaceView.java",
  "io/flutter/embedding/android/FlutterTextureView.java",
  "io/flutter/embedding/android/FlutterView.java",
  "io/flutter/embedding/android/MotionEventTracker.java",
  "io/flutter/embedding/android/RenderMode.java",
  "io/flutter/embedding/android/SplashScreen.java",
  "io/flutter/embedding/android/SplashScreenProvider.java",
  "io/flutter/embedding/android/TransparencyMode.java",
  "io/flutter/embedding/engine/FlutterEngine.java",
  "io/flutter/embedding/engine/FlutterEngineCache.java",
  "io/flutter/embedding/engine/FlutterEnginePluginRegistry.java",
  "io/flutter/embedding/engine/FlutterJNI.java",
  "io/flutter/embedding/engine/FlutterOverlaySurface.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/loader/ApplicationInfoLoader.java",
  "io/flutter/embedding/engine/loader/FlutterApplicationInfo.java",
  "io/flutter/embedding/engine/loader/FlutterLoader.java",
  "io/flutter/embedding/engine/loader/ResourceExtractor.java",
  "io/flutter/embedding/engine/mutatorsstack/FlutterMutatorView.java",
  "io/flutter/embedding/engine/mutatorsstack/FlutterMutatorsStack.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/lifecycle/HiddenLifecycleReference.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/FlutterUiDisplayListener.java",
  "io/flutter/embedding/engine/renderer/RenderSurface.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/MouseCursorChannel.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/RestorationChannel.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/FlutterTextUtils.java",
  "io/flutter/plugin/editing/InputConnectionAdaptor.java",
  "io/flutter/plugin/editing/TextInputPlugin.java",
  "io/flutter/plugin/localization/LocalizationPlugin.java",
  "io/flutter/plugin/mouse/MouseCursorPlugin.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/TextureRegistry.java",
  "io/flutter/view/VsyncWaiter.java",
]

list_script = rebase_path("//build/ls.py", ".", "//")
embedding_dependencies_jars =
    exec_script(list_script,
                [
                  "--target-directory",
                  rebase_path("//third_party/android_embedding_dependencies"),
                ],
                "list lines")

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

  jar_path = embedding_jar_path
  source_jar_path = embedding_source_jar_path

  sources = android_java_sources

  sources += get_target_outputs(":gen_android_build_config_java")

  outputs = [
    depfile,
    jar_path,
    jar_path + ".md5.stamp",
    source_jar_path,
    source_jar_path + ".md5.stamp",
  ]

  lambda_jar = "$android_sdk_build_tools/core-lambda-stubs.jar"
  inputs = [
             android_sdk_jar,
             lambda_jar,
           ] + embedding_dependencies_jars

  _rebased_current_path = rebase_path(".")
  _rebased_jar_path = rebase_path(jar_path, root_build_dir)
  _rebased_source_jar_path = rebase_path(source_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_lambda_jar = rebase_path(lambda_jar, root_build_dir)
  _rebased_classpath =
      [
        _rebased_android_sdk_jar,
        _rebased_lambda_jar,
      ] + rebase_path(embedding_dependencies_jars, root_build_dir)

  args = [
    "--depfile=$_rebased_depfile",
    "--jar-path=$_rebased_jar_path",
    "--jar-source-path=$_rebased_source_jar_path",
    "--jar-source-base-dir=$_rebased_current_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/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_jar") {
  script = "//build/android/gyp/create_flutter_jar.py"

  if (stripped_symbols) {
    engine_library = "lib.stripped/libflutter.so"
  } else {
    engine_library = "libflutter.so"
  }

  inputs = [
    "$root_build_dir/$embedding_jar_filename",
    "$root_build_dir/$engine_library",
  ]

  engine_artifact_id =
      string_replace(android_app_abi, "-", "_") + "_" + flutter_runtime_mode

  engine_jar_filename = "$engine_artifact_id.jar"

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

  args = [
    "--output",
    rebase_path("flutter.jar", root_build_dir, root_build_dir),
    "--output_native_jar",
    rebase_path(engine_jar_filename, root_build_dir, root_build_dir),
    "--dist_jar",
    rebase_path(embedding_jar_filename, root_build_dir, root_build_dir),
    "--native_lib",
    rebase_path("$engine_library", root_build_dir, root_build_dir),
    "--android_abi",
    "$android_app_abi",
  ]

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

action("pom_libflutter") {
  script = "//flutter/tools/androidx/generate_pom_file.py"

  inputs = [ "//flutter/tools/androidx/files.json" ]

  artifact_id =
      string_replace(android_app_abi, "-", "_") + "_" + flutter_runtime_mode

  outputs = [ "$root_build_dir/$artifact_id.pom" ]

  args = [
    "--destination",
    rebase_path(root_build_dir),
    "--engine-version",
    engine_version,
    "--engine-artifact-id",
    artifact_id,
  ]
}

action("pom_embedding") {
  script = "//flutter/tools/androidx/generate_pom_file.py"

  inputs = [ "//flutter/tools/androidx/files.json" ]

  artifact_id = "flutter_embedding_$flutter_runtime_mode"

  outputs = [ "$root_build_dir/$artifact_id.pom" ]

  args = [
    "--destination",
    rebase_path(root_build_dir),
    "--engine-version",
    engine_version,
    "--engine-artifact-id",
    artifact_id,
    "--include-embedding-dependencies",
    "true",
  ]
}

# To build and run:
#   testing/run_tests.py [--type=java] [--java-filter=io.flutter.TestClassName]
action("robolectric_tests") {
  script = "//build/android/gyp/javac.py"
  depfile = "$target_gen_dir/$target_name.d"

  jar_path = "$root_out_dir/robolectric_tests.jar"

  sources = [
    "test/io/flutter/FlutterTestSuite.java",
    "test/io/flutter/SmokeTest.java",
    "test/io/flutter/embedding/android/FlutterActivityAndFragmentDelegateTest.java",
    "test/io/flutter/embedding/android/FlutterActivityTest.java",
    "test/io/flutter/embedding/android/FlutterAndroidComponentTest.java",
    "test/io/flutter/embedding/android/FlutterFragmentActivityTest.java",
    "test/io/flutter/embedding/android/FlutterFragmentTest.java",
    "test/io/flutter/embedding/android/FlutterViewTest.java",
    "test/io/flutter/embedding/android/RobolectricFlutterActivity.java",
    "test/io/flutter/embedding/engine/FlutterEngineCacheTest.java",
    "test/io/flutter/embedding/engine/FlutterEnginePluginRegistryTest.java",
    "test/io/flutter/embedding/engine/FlutterEngineTest.java",
    "test/io/flutter/embedding/engine/FlutterJNITest.java",
    "test/io/flutter/embedding/engine/FlutterShellArgsTest.java",
    "test/io/flutter/embedding/engine/PluginComponentTest.java",
    "test/io/flutter/embedding/engine/RenderingComponentTest.java",
    "test/io/flutter/embedding/engine/dart/DartExecutorTest.java",
    "test/io/flutter/embedding/engine/loader/ApplicationInfoLoaderTest.java",
    "test/io/flutter/embedding/engine/plugins/shim/ShimPluginRegistryTest.java",
    "test/io/flutter/embedding/engine/renderer/FlutterRendererTest.java",
    "test/io/flutter/embedding/engine/systemchannels/PlatformChannelTest.java",
    "test/io/flutter/embedding/engine/systemchannels/RestorationChannelTest.java",
    "test/io/flutter/external/FlutterLaunchTests.java",
    "test/io/flutter/plugin/common/StandardMessageCodecTest.java",
    "test/io/flutter/plugin/common/StandardMethodCodecTest.java",
    "test/io/flutter/plugin/editing/InputConnectionAdaptorTest.java",
    "test/io/flutter/plugin/editing/TextInputPluginTest.java",
    "test/io/flutter/plugin/localization/LocalizationPluginTest.java",
    "test/io/flutter/plugin/mouse/MouseCursorPluginTest.java",
    "test/io/flutter/plugin/platform/PlatformPluginTest.java",
    "test/io/flutter/plugin/platform/PlatformViewsControllerTest.java",
    "test/io/flutter/plugin/platform/SingleViewPresentationTest.java",
    "test/io/flutter/plugins/GeneratedPluginRegistrant.java",
    "test/io/flutter/util/FakeKeyEvent.java",
    "test/io/flutter/util/PreconditionsTest.java",
    "test/io/flutter/view/AccessibilityBridgeTest.java",
  ]

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

  additional_jar_files = [ "robolectric.properties" ]

  _jar_dependencies = [
                        android_sdk_jar,
                        embedding_jar_path,
                      ] + embedding_dependencies_jars

  inputs = _jar_dependencies + additional_jar_files

  _rebased_current_path = rebase_path(".")
  _rebased_jar_path = rebase_path(jar_path, root_build_dir)
  _rebased_depfile = rebase_path(depfile, root_build_dir)
  _rebased_classpath = rebase_path(_jar_dependencies, root_build_dir)
  _rebased_srcjars = rebase_path(_jar_dependencies, root_build_dir)
  _rebased_additional_files = rebase_path(additional_jar_files, root_build_dir)

  args = [
    "--depfile=$_rebased_depfile",
    "--jar-path=$_rebased_jar_path",
    "--classpath=$_rebased_classpath",
    "--jar-source-base-dir=$_rebased_current_path",
    "--java-srcjars=$_rebased_srcjars",
    "--additional-jar-files=$_rebased_additional_files",
  ]

  args += rebase_path(sources, root_build_dir)

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

zip_bundle("android_symbols") {
  output = "$android_zip_archive_dir/symbols.zip"
  files = [
    {
      source = "$root_build_dir/libflutter.so"
      destination = "libflutter.so"
    },
  ]

  deps = [ ":flutter_shell_native" ]
}

zip_bundle("android") {
  output = "$android_zip_archive_dir/artifacts.zip"
  files = [
    {
      source = "$root_build_dir/flutter.jar"
      destination = "flutter.jar"
    },
  ]

  deps = [
    ":android_jar",
    ":android_symbols",
  ]

  if (current_cpu == "x86" || current_cpu == "x64") {
    files += [
      {
        source = "$root_build_dir/lib.stripped/libflutter.so"
        destination = "libflutter.so"
      },
    ]
    deps += [ ":flutter_shell_native" ]
  }
}

# TODO(dnfield): make these targets pass.
# https://github.com/flutter/flutter/issues/42400
action("gen_android_javadoc") {
  script = "//flutter/tools/gen_javadoc.py"
  sources = android_java_sources + embedding_dependencies_jars

  outputs = [ "$target_gen_dir/javadocs" ]
  args = [
    "--out-dir",
    rebase_path(outputs[0]),
    "--android-source-root",
    rebase_path("."),
    "--build-config-path",
    rebase_path(target_gen_dir),
    "--third-party",
    rebase_path("//third_party"),
  ]
}

zip_bundle("android_javadoc") {
  output = "android-javadoc.zip"
  javadoc_dir = get_target_outputs(":gen_android_javadoc")

  files = [
    {
      source = javadoc_dir[0]
      destination = "/"
    },
  ]
  deps = [ ":gen_android_javadoc" ]
}
