# Copyright (c) 2020-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("${chip_root}/src/platform/device.gni")

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

assert(chip_device_platform == "android")

static_library("android") {
  output_name = "libAndroidPlatform"

  sources = [
    "../DeviceSafeQueue.cpp",
    "../DeviceSafeQueue.h",
    "../SingletonConfigurationManager.cpp",
    "AndroidChipPlatform-JNI.cpp",
    "AndroidConfig.cpp",
    "AndroidConfig.h",
    "BLEManagerImpl.cpp",
    "BLEManagerImpl.h",
    "BleConnectCallback-JNI.cpp",
    "BlePlatformConfig.h",
    "CHIPDevicePlatformEvent.h",
    "CHIPP256KeypairBridge.cpp",
    "CHIPP256KeypairBridge.h",
    "CommissionableDataProviderImpl.cpp",
    "CommissionableDataProviderImpl.h",
    "ConfigurationManagerImpl.cpp",
    "ConfigurationManagerImpl.h",
    "ConnectivityManagerImpl.cpp",
    "ConnectivityManagerImpl.h",
    "DeviceInstanceInfoProviderImpl.cpp",
    "DeviceInstanceInfoProviderImpl.h",
    "DiagnosticDataProviderImpl.cpp",
    "DiagnosticDataProviderImpl.h",
    "DnssdImpl.cpp",
    "DnssdImpl.h",
    "KeyValueStoreManagerImpl.cpp",
    "KeyValueStoreManagerImpl.h",
    "PlatformManagerImpl.cpp",
    "PlatformManagerImpl.h",
  ]

  deps = [
    "${chip_root}/src/lib/dnssd:platform_header",
    "${chip_root}/src/setup_payload",
    "${chip_root}/src/trace",
  ]

  public_deps = [ "${chip_root}/src/platform:platform_base" ]

  public_configs = []
}

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

  deps = [
    ":android_sdk",
    "${chip_root}/third_party/android_deps:annotation",
  ]
  data_deps = [ ":android" ]

  sources = [
    "java/chip/platform/AndroidBleManager.java",
    "java/chip/platform/AndroidChipPlatform.java",
    "java/chip/platform/AndroidChipPlatformException.java",
    "java/chip/platform/BleCallback.java",
    "java/chip/platform/BleConnectCallback.java",
    "java/chip/platform/BleManager.java",
    "java/chip/platform/ChipMdnsCallback.java",
    "java/chip/platform/ChipMdnsCallbackImpl.java",
    "java/chip/platform/ConfigurationManager.java",
    "java/chip/platform/DiagnosticDataProvider.java",
    "java/chip/platform/DiagnosticDataProviderImpl.java",
    "java/chip/platform/KeyValueStoreManager.java",
    "java/chip/platform/NetworkInterface.java",
    "java/chip/platform/NsdManagerServiceBrowser.java",
    "java/chip/platform/NsdManagerServiceResolver.java",
    "java/chip/platform/NsdServiceFinderAndResolver.java",
    "java/chip/platform/PreferencesConfigurationManager.java",
    "java/chip/platform/PreferencesKeyValueStoreManager.java",
    "java/chip/platform/ServiceBrowser.java",
    "java/chip/platform/ServiceResolver.java",
  ]

  javac_flags = [
    "-Xlint:deprecation",
    "-parameters",  # Store infomation about method parameters
  ]
}

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