# Copyright 2019 The Fuchsia 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("//third_party/openweave-core/config.gni")

source_set("InetLayer") {
  top_builddir = rebase_path("//third_party/openweave-core")
  sources = [
    "$top_builddir/src/inet/EndPointBasis.cpp",
    "$top_builddir/src/inet/IPAddress-StringFuncts.cpp",
    "$top_builddir/src/inet/IPAddress.cpp",
    "$top_builddir/src/inet/IPEndPointBasis.cpp",
    "$top_builddir/src/inet/IPPrefix.cpp",
    "$top_builddir/src/inet/InetError.cpp",
    "$top_builddir/src/inet/InetInterface.cpp",
    "$top_builddir/src/inet/InetLayer.cpp",
    "$top_builddir/src/inet/InetLayerBasis.cpp",
    "$top_builddir/src/inet/InetTimer.cpp",
    "$top_builddir/src/inet/InetUtils.cpp",
  ]
  if (inet_want_endpoint_dns) {
    sources += [ "$top_builddir/src/inet/DNSResolver.cpp" ]
  }
  if (inet_want_endpoint_raw) {
    sources += [ "$top_builddir/src/inet/RawEndPoint.cpp" ]
  }
  if (inet_want_endpoint_tcp) {
    sources += [ "$top_builddir/src/inet/TCPEndPoint.cpp" ]
  }
  if (inet_want_endpoint_udp) {
    sources += [ "$top_builddir/src/inet/UDPEndPoint.cpp" ]
  }
  if (inet_want_endpoint_tun) {
    sources += [ "$top_builddir/src/inet/TunEndPoint.cpp" ]
  }
  if (weave_system_config_use_sockets) {
    if (inet_config_enable_async_dns_sockets) {
      sources += [ "$top_builddir/src/inet/AsyncDNSResolverSockets.cpp" ]
    }
  }
  if (weave_with_nlfaultinjection) {
    sources += [ "$top_builddir/src/inet/InetFaultInjection.cpp" ]
  }
  configs += [ "//third_party/openweave-core/src/include:fuchsia" ]
  configs += [ "//build/config:Wno-extra-semi" ]
  public_deps = [
    "//sdk/fidl/fuchsia.net.interfaces.admin",
    "//sdk/fidl/fuchsia.net.stack",
    "//sdk/fidl/fuchsia.net.tun",
    "//sdk/fidl/fuchsia.netstack",
    "//sdk/lib/sys/cpp",
    "//third_party/openweave-core/src/include:common",
    "//zircon/public/lib/zx",
  ]
}
