# 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/common/graphics",
    "//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/FlutterInjector.java",
  "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/FlutterPlayStoreSplitApplication.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/ExclusiveAppComponent.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/FlutterEngineConnectionRegistry.java",
  "io/flutter/embedding/engine/FlutterEngineGroup.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/deferredcomponents/DeferredComponentManager.java",
  "io/flutter/embedding/engine/deferredcomponents/PlayStoreDeferredComponentManager.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/plugins/util/GeneratedPluginRegister.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/renderer/SurfaceTextureWrapper.java",
  "io/flutter/embedding/engine/systemchannels/AccessibilityChannel.java",
  "io/flutter/embedding/engine/systemchannels/DeferredComponentChannel.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/ImeSyncDeferringInsetsCallback.java",
  "io/flutter/plugin/editing/InputConnectionAdaptor.java",
  "io/flutter/plugin/editing/ListenableEditingState.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("check_imports") {
  script = "//flutter/tools/android_illegal_imports.py"

  sources = android_java_sources

  stamp_file = "$root_out_dir/check_android_imports"

  # File does not actually get created, but GN expects us to have an output here.
  outputs = [ stamp_file ]

  args = [
           "--stamp",
           rebase_path(stamp_file),
           "--files",
         ] + rebase_path(android_java_sources)
}

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 = [
    ":check_imports",
    ":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",
    "$root_build_dir/$artifact_id.maven-metadata.xml",
  ]

  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",
    "$root_build_dir/$artifact_id.maven-metadata.xml",
  ]

  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/FlutterInjectorTest.java",
    "test/io/flutter/FlutterTestSuite.java",
    "test/io/flutter/SmokeTest.java",
    "test/io/flutter/TestUtils.java",
    "test/io/flutter/embedding/android/AndroidKeyProcessorTest.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/FlutterEngineConnectionRegistryTest.java",
    "test/io/flutter/embedding/engine/FlutterEngineGroupComponentTest.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/dart/DartMessengerTest.java",
    "test/io/flutter/embedding/engine/deferredcomponents/PlayStoreDeferredComponentManagerTest.java",
    "test/io/flutter/embedding/engine/loader/ApplicationInfoLoaderTest.java",
    "test/io/flutter/embedding/engine/loader/FlutterLoaderTest.java",
    "test/io/flutter/embedding/engine/mutatorsstack/FlutterMutatorViewTest.java",
    "test/io/flutter/embedding/engine/plugins/shim/ShimPluginRegistryTest.java",
    "test/io/flutter/embedding/engine/renderer/FlutterRendererTest.java",
    "test/io/flutter/embedding/engine/systemchannels/DeferredComponentChannelTest.java",
    "test/io/flutter/embedding/engine/systemchannels/KeyEventChannelTest.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/ListenableEditingStateTest.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" ]
}
