# Copyright (c) 2021 Project CHIP Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import("//build_overrides/build.gni")
import("//build_overrides/chip.gni")

import("${build_root}/config/android_abi.gni")
import("${chip_root}/build/chip/java/rules.gni")
import("${chip_root}/build/chip/tools.gni")

shared_library("jni") {
  output_name = "libTvCastingApp"

  sources = [
    "${chip_root}/examples/tv-casting-app/tv-casting-common/include/CHIPProjectAppConfig.h",
    "App/app/src/main/jni/cpp/Constants.h",
    "App/app/src/main/jni/cpp/ConversionUtils.cpp",
    "App/app/src/main/jni/cpp/ConversionUtils.h",
    "App/app/src/main/jni/cpp/JNIDACProvider.cpp",
    "App/app/src/main/jni/cpp/JNIDACProvider.h",
    "App/app/src/main/jni/cpp/MatterCallbackHandler-JNI.cpp",
    "App/app/src/main/jni/cpp/MatterCallbackHandler-JNI.h",
    "App/app/src/main/jni/cpp/TvCastingApp-JNI.cpp",
  ]

  deps = [
    "${chip_root}/examples/tv-casting-app/tv-casting-common",
    "${chip_root}/src/app/server/java:jni",
    "${chip_root}/src/lib",
    "${chip_root}/third_party/inipp",
  ]

  cflags = [ "-Wconversion" ]

  output_dir = "${root_out_dir}/lib/jni/${android_abi}"

  ldflags = [ "-Wl,--gc-sections" ]
}

android_library("java") {
  output_name = "TvCastingApp.jar"

  deps = [
    ":android",
    "${chip_root}/src/app/server/java",
    "${chip_root}/src/platform/android:java",
    "${chip_root}/third_party/android_deps:annotation",
  ]

  data_deps = [
    ":jni",
    "${chip_root}/build/chip/java:shared_cpplib",
  ]

  sources = [
    "App/app/src/main/jni/com/chip/casting/AppParameters.java",
    "App/app/src/main/jni/com/chip/casting/ContentApp.java",
    "App/app/src/main/jni/com/chip/casting/ContentLauncherTypes.java",
    "App/app/src/main/jni/com/chip/casting/DACProvider.java",
    "App/app/src/main/jni/com/chip/casting/DACProviderStub.java",
    "App/app/src/main/jni/com/chip/casting/DiscoveredNodeData.java",
    "App/app/src/main/jni/com/chip/casting/FailureCallback.java",
    "App/app/src/main/jni/com/chip/casting/MatterCallbackHandler.java",
    "App/app/src/main/jni/com/chip/casting/MatterError.java",
    "App/app/src/main/jni/com/chip/casting/MediaPlaybackTypes.java",
    "App/app/src/main/jni/com/chip/casting/NsdDiscoveryListener.java",
    "App/app/src/main/jni/com/chip/casting/NsdResolveListener.java",
    "App/app/src/main/jni/com/chip/casting/SubscriptionEstablishedCallback.java",
    "App/app/src/main/jni/com/chip/casting/SuccessCallback.java",
    "App/app/src/main/jni/com/chip/casting/TargetNavigatorTypes.java",
    "App/app/src/main/jni/com/chip/casting/TvCastingApp.java",
    "App/app/src/main/jni/com/chip/casting/VideoPlayer.java",
  ]

  javac_flags = [ "-Xlint:deprecation" ]

  # TODO: add classpath support (we likely need to add something like
  #  ..../platforms/android-21/android.jar to access BLE items)
}

java_prebuilt("android") {
  jar_path = "${android_sdk_root}/platforms/android-21/android.jar"
}

group("default") {
  deps = [
    ":android",
    ":java",
    ":jni",
    "${chip_root}/src/app/server/java",
    "${chip_root}/src/platform/android:java",
  ]
}
