# Copyright 2017 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("//build/components.gni")
import("//build/fuzz.gni")
import("//build/rust/rustc_fuzzer.gni")
import("//build/rust/rustc_test.gni")
import(
    "//src/connectivity/network/netstack3/core/rustc_library_with_features.gni")

_all_core_crates = [
  "base:netstack3-base",
  "base:netstack3-base-benchmarks",
  "base:netstack3-base-instrumented",
  "base:netstack3-base-loom",
  "base:netstack3-base-testutils",
  "filter:netstack3-filter",
  "filter:netstack3-filter-benchmarks",
  "filter:netstack3-filter-instrumented",
  "filter:netstack3-filter-loom",
  "filter:netstack3-filter-testutils",
  "ip:netstack3-ip",
  "ip:netstack3-ip-benchmarks",
  "ip:netstack3-ip-instrumented",
  "ip:netstack3-ip-loom",
  "ip:netstack3-ip-testutils",
  "device:netstack3-device",
  "device:netstack3-device-benchmarks",
  "device:netstack3-device-instrumented",
  "device:netstack3-device-loom",
  "device:netstack3-device-testutils",
  "datagram:netstack3-datagram",
  "datagram:netstack3-datagram-benchmarks",
  "datagram:netstack3-datagram-instrumented",
  "datagram:netstack3-datagram-loom",
  "datagram:netstack3-datagram-testutils",
  "tcp:netstack3-tcp",
  "tcp:netstack3-tcp-benchmarks",
  "tcp:netstack3-tcp-instrumented",
  "tcp:netstack3-tcp-loom",
  "tcp:netstack3-tcp-testutils",
  "udp:netstack3-udp",
  "udp:netstack3-udp-benchmarks",
  "udp:netstack3-udp-instrumented",
  "udp:netstack3-udp-loom",
  "udp:netstack3-udp-testutils",
  "icmp_echo:netstack3-icmp-echo",
  "icmp_echo:netstack3-icmp-echo-benchmarks",
  "icmp_echo:netstack3-icmp-echo-instrumented",
  "icmp_echo:netstack3-icmp-echo-loom",
  "icmp_echo:netstack3-icmp-echo-testutils",
  "sync:netstack3-sync",
  "sync:netstack3-sync-instrumented",
  "sync:netstack3-sync-loom",
]

rustc_library_with_features("netstack3-core") {
  version = "0.1.0"
  edition = "2021"
  configs += [ "//src/connectivity/network/netstack3:netstack3_configs" ]
  configs -= [ "//build/config/rust/lints:allow_unused_results" ]
  check_cfgs = [
    "benchmark",
    "no_lock_order",
  ]

  # Disable lock ordering in release builds to speed-up compilation.
  #
  # We also always disable it for host builds to make it easier to spot
  # conditional compilation problems when building a debug image.
  if (!is_debug || is_host) {
    configs += [ ":no_lock_order" ]
  }

  sources = [
    "src/api.rs",
    "src/context.rs",
    "src/counters.rs",
    "src/device/base.rs",
    "src/device/ethernet.rs",
    "src/device/loopback.rs",
    "src/device/pure_ip.rs",
    "src/device/socket.rs",
    "src/filter/integration.rs",
    "src/ip/base.rs",
    "src/ip/device.rs",
    "src/ip/raw.rs",
    "src/lib.rs",
    "src/lock_ordering.rs",
    "src/marker.rs",
    "src/state.rs",
    "src/testutil.rs",
    "src/time.rs",
    "src/transport.rs",
    "src/transport/integration.rs",
  ]
  deps = [
    "lock-order",
    "macros:netstack3-macros",
    "//src/connectivity/lib/net-types",
    "//src/connectivity/lib/packet-formats",
    "//src/lib/network/packet",
    "//third_party/rust_crates:assert_matches",
    "//third_party/rust_crates:derivative",
    "//third_party/rust_crates:log",

    # TODO(https://github.com/rust-lang-nursery/portability-wg/issues/11):
    # remove this module.
    "//src/lib/fakealloc",
  ]
  _testutils_deps = [ "//third_party/rust_crates:zerocopy" ]

  feature_sets = [
    {
      features = []
      deps += [
        "base:netstack3-base",
        "datagram:netstack3-datagram",
        "device:netstack3-device",
        "filter:netstack3-filter",
        "icmp_echo:netstack3-icmp-echo",
        "ip:netstack3-ip",
        "sync:netstack3-sync",
        "tcp:netstack3-tcp",
        "udp:netstack3-udp",
      ]
    },

    # A variant of the netstack3-core library that has additional
    # instrumentation that is useful for debugging and testing, like recursive
    # lock acquisition detection.
    {
      target_name = "netstack3-core-instrumented"
      features = [ "instrumented" ]
      with_unit_tests = true
      non_test_deps = [
        "base:netstack3-base-instrumented",
        "datagram:netstack3-datagram-instrumented",
        "device:netstack3-device-instrumented",
        "filter:netstack3-filter-instrumented",
        "icmp_echo:netstack3-icmp-echo-instrumented",
        "ip:netstack3-ip-instrumented",
        "sync:netstack3-sync-instrumented",
        "tcp:netstack3-tcp-instrumented",
        "udp:netstack3-udp-instrumented",
      ]
      test_deps = [
        "base:netstack3-base-testutils",
        "datagram:netstack3-datagram-testutils",
        "device:netstack3-device-testutils",
        "filter:netstack3-filter-testutils",
        "icmp_echo:netstack3-icmp-echo-testutils",
        "ip:netstack3-ip-testutils",
        "sync:netstack3-sync-instrumented",
        "tcp:netstack3-tcp-testutils",
        "udp:netstack3-udp-testutils",
      ]
      test_deps += _testutils_deps

      # Guard against bad crate variants.
      assert_no_deps = _all_core_crates - non_test_deps
    },

    # A variant of the netstack3-core library that exposes test utilities.
    {
      target_name = "netstack3-core-testutils"
      testonly = true
      features = [
        "instrumented",
        "testutils",
      ]

      _core_deps = [
        "base:netstack3-base-testutils",
        "datagram:netstack3-datagram-testutils",
        "device:netstack3-device-testutils",
        "filter:netstack3-filter-testutils",
        "icmp_echo:netstack3-icmp-echo-testutils",
        "ip:netstack3-ip-testutils",
        "sync:netstack3-sync-instrumented",
        "tcp:netstack3-tcp-testutils",
        "udp:netstack3-udp-testutils",
      ]

      deps += _core_deps
      deps += _testutils_deps

      # Guard against bad crate variants.
      assert_no_deps = _all_core_crates - _core_deps
    },

    # A variant of the netstack3-core library that is built for running
    # benchmarks.
    {
      target_name = "netstack3-core-benchmarks"
      testonly = true
      features = [ "testutils" ]

      _core_deps = [
        "base:netstack3-base-benchmarks",
        "datagram:netstack3-datagram-benchmarks",
        "device:netstack3-device-benchmarks",
        "filter:netstack3-filter-benchmarks",
        "icmp_echo:netstack3-icmp-echo-benchmarks",
        "ip:netstack3-ip-benchmarks",
        "sync:netstack3-sync",
        "tcp:netstack3-tcp-benchmarks",
        "udp:netstack3-udp-benchmarks",
      ]
      deps += _core_deps
      deps += _testutils_deps

      # Guard against bad crate variants.
      assert_no_deps = _all_core_crates - _core_deps

      configs += [ ":benchmark" ]
    },
  ]
  if (is_host) {
    feature_sets += [
      # A variant of the netstack3-core library that is built for running loom
      # tests, by using instrumented loom-provided types for all
      # synchronization.
      {
        target_name = "netstack3-core-loom"
        testonly = true
        features = [
          "instrumented",
          "testutils",
        ]
        _core_deps = [
          "base:netstack3-base-loom",
          "datagram:netstack3-datagram-loom",
          "device:netstack3-device-loom",
          "filter:netstack3-filter-loom",
          "icmp_echo:netstack3-icmp-echo-loom",
          "ip:netstack3-ip-loom",
          "sync:netstack3-sync-loom",
          "tcp:netstack3-tcp-loom",
          "udp:netstack3-udp-loom",
        ]
        deps += _core_deps
        deps += _testutils_deps

        # Guard against bad crate variants.
        assert_no_deps = _all_core_crates - _core_deps

        configs += [ ":loom" ]
      },
    ]
  }
}

fuchsia_unittest_package("netstack3-core-test-package") {
  package_name = "netstack3-core-test"
  deps = [ ":netstack3-core-instrumented_test" ]
}

config("loom") {
  rustflags = [ "--cfg=loom" ]

  # The loom crate documentation recommends compiling with optimizations since
  # the number of iterations can be large enough to make tests unreasonably slow
  # otherwise.
  configs = [ "//build/config:optimize_default" ]
}

config("benchmark") {
  rustflags = [ "--cfg=benchmark" ]
}

config("no_lock_order") {
  rustflags = [ "--cfg=no_lock_order" ]
  visibility = [ ":*" ]
}

rustc_fuzzer("fuzz-single-device") {
  edition = "2021"
  rustfunction = "single_device_arbitrary_packets"
  source_root = "fuzz/src/lib.rs"

  sources = [ "fuzz/src/lib.rs" ]
  deps = [
    ":netstack3-core-testutils",
    "//src/connectivity/lib/fuzz-util",
    "//src/connectivity/lib/net-declare",
    "//src/connectivity/lib/net-types",
    "//src/connectivity/lib/packet-formats",
    "//src/lib/fuzzing/rust:fuzz",
    "//src/lib/network/packet",
    "//third_party/rust_crates:arbitrary",
    "//third_party/rust_crates:lazy_static",
    "//third_party/rust_crates:log",
  ]

  features = [
    # Logging is turned off by default so that the fuzzer can run faster. It can
    # be enabled to be included in the output the fuzzer prints (only on
    # failure) by enabling any of the following features. Enabling multiple is
    # equivalent to enabling the most verbose.
    #   "log_trace"
    #   "log_debug"
    #   "log_info"
  ]

  configs -= [ "//build/config/rust/lints:allow_unused_results" ]
}

fuchsia_fuzzer_component("fuzz-single-device-component") {
  manifest = "meta/fuzz-single-device.cml"
  deps = [ ":fuzz-single-device" ]
}

if (is_fuchsia) {
  fuchsia_fuzzer_package("netstack3-core-fuzzers") {
    rust_fuzzer_components = [ ":fuzz-single-device-component" ]
  }
} else {
  group("netstack3-core-fuzzers") {
    testonly = true
    deps = [ ":fuzz-single-device" ]
  }
}

group("tests") {
  testonly = true
  public_deps = [
    ":netstack3-core-fuzzers",
    ":netstack3-core-instrumented_test($host_toolchain)",
    ":netstack3-core-test-package",
    "base:tests",
    "datagram:tests",
    "device:tests",
    "filter:tests",
    "icmp_echo:tests",
    "ip:tests",
    "lock-order:tests",
    "macros:tests",
    "sync:tests",
    "tcp:tests",
    "tests($host_toolchain)",
    "udp:tests",
  ]
}
