# Copyright 2016 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/fidl/fidl.gni")
import("//build/fidl/toolchain.gni")

group("lib") {
  testonly = true
  deps = [
    ":just_fidl",
    ":maxwell_internal",
    ":services",
    "app_driver",
    "async",
    "common",
    "device_info",
    "entity",
    "fidl",
    "integration_testing",
    "lifecycle",
    "module_manifest",
    "module_manifest_source",
    "testing",
  ]
}

group("services") {
  deps = [
    "//sdk/fidl/fuchsia.modular",
  ]
}

group("just_fidl") {
  deps = [
    "//sdk/fidl/fuchsia.modular($fidl_toolchain)",
  ]
}

executable("modular_lib_unittests") {
  testonly = true

  deps = [
    "//src/lib/fxl/test:gtest_main",
    "//src/modular/lib/async/cpp:unittests",
    "//src/modular/lib/entity/cpp:unittests",
    "//src/modular/lib/fidl:unittests",
    "//src/modular/lib/modular_config:unittests",
    "//src/modular/lib/modular_test_harness/cpp:unittests",
    "//src/modular/lib/module_manifest:unittests",
  ]
}

fidl("maxwell_internal") {
  # TODO(fxb/35879): Remove lint exclusions by fixing known FIDL lint violations in this target
  excluded_checks = [ "string-bounds-not-specified" ]

  name = "fuchsia.maxwell.internal"

  sources = [
    "module_manifest_source/fidl/module_package_indexer.fidl",
  ]
}
