# 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/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}/third_party/android_deps:annotation",
  ]

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

  sources = [
    "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/MatterCallbackHandler.java",
    "App/app/src/main/jni/com/chip/casting/TvCastingApp.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",
  ]
}
