# 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/chip.gni")
import("//build_overrides/telink.gni")

import("${chip_root}/src/platform/device.gni")

assert(chip_device_platform == "telink")

static_library("telink") {
  sources = [
    "../SingletonConfigurationManager.cpp",
    "../Zephyr/ConfigurationManagerImpl.cpp",
    "../Zephyr/DiagnosticDataProviderImpl.cpp",
    "../Zephyr/DiagnosticDataProviderImpl.h",
    "../Zephyr/KeyValueStoreManagerImpl.cpp",
    "../Zephyr/Logging.cpp",
    "../Zephyr/PlatformManagerImpl.cpp",
    "../Zephyr/SystemTimeSupport.cpp",
    "../Zephyr/ZephyrConfig.cpp",
    "../Zephyr/ZephyrConfig.h",
    "BLEManagerImpl.cpp",
    "BLEManagerImpl.h",
    "BlePlatformConfig.h",
    "CHIPDevicePlatformConfig.h",
    "CHIPDevicePlatformEvent.h",
    "CHIPPlatformConfig.h",
    "ConfigurationManagerImpl.h",
    "ConnectivityManagerImpl.cpp",
    "ConnectivityManagerImpl.h",
    "DeviceNetworkProvisioningDelegateImpl.cpp",
    "DeviceNetworkProvisioningDelegateImpl.h",
    "InetPlatformConfig.h",
    "KeyValueStoreManagerImpl.h",
    "PlatformManagerImpl.h",
    "SystemPlatformConfig.h",

    # B91 HW crypto unit
    "crypto/internal/common.h",
    "crypto/internal/compatibility/aes_alt.c",
    "crypto/internal/compatibility/aesni.h",
    "crypto/internal/compatibility/bn_mul.h",
    "crypto/internal/compatibility/ecp_alt.c",
    "crypto/internal/compatibility/ecp_curves_alt.c",
    "crypto/internal/compatibility/ecp_internal_alt.h",
    "crypto/internal/compatibility/ecp_invasive.h",
    "crypto/internal/compatibility/padlock.h",
    "crypto/internal/ecp_alt_b91_backend.c",
    "crypto/internal/ecp_alt_b91_backend_test.c",
    "crypto/internal/entropy_poll_alt.c",
    "crypto/internal/multithread.c",
    "crypto/internal/multithread.h",
    "crypto/internal/test_utils.c",
    "crypto/internal/test_utils.h",
  ]

  deps = []

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

  if (chip_enable_openthread) {
    sources += [
      "../OpenThread/OpenThreadUtils.cpp",
      "../Zephyr/ThreadStackManagerImpl.cpp",
      "ThreadStackManagerImpl.h",
    ]

    if (chip_mdns == "platform") {
      sources += [ "../OpenThread/DnssdImpl.cpp" ]
      deps = [ "${chip_root}/src/lib/dnssd:platform_header" ]
    }
  }

  public_deps += [ "${chip_root}/src/crypto" ]
}
