# Copyright 2018 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")

# NOTE: fuchsia.sys2 is slowly being unpacked into a set of
# `fuchsia.component.*` libraries.
fidl("fuchsia.sys2") {
  # TODO(fxbug.dev/35879): Remove lint exclusions by fixing known FIDL lint violations in this target
  excluded_checks = [
    "string-bounds-not-specified",
    "vector-bounds-not-specified",
  ]

  sdk_category = "internal"

  public_deps = [
    "//sdk/fidl/fuchsia.component",
    "//sdk/fidl/fuchsia.data",
    "//sdk/fidl/fuchsia.io",
    "//sdk/fidl/fuchsia.io2",
    "//sdk/fidl/fuchsia.mem",
    "//sdk/fidl/fuchsia.url",
  ]

  sources = [
    "decls/capability_decl.fidl",
    "decls/child_decl.fidl",
    "decls/collection_decl.fidl",
    "decls/component_decl.fidl",
    "decls/environment_decl.fidl",
    "decls/expose_decl.fidl",
    "decls/object.fidl",
    "decls/offer_decl.fidl",
    "decls/program_decl.fidl",
    "decls/relative_refs.fidl",
    "decls/use_decl.fidl",
    "events.fidl",
    "realm.fidl",
    "runtime/component.fidl",
    "runtime/component_resolver.fidl",
    "runtime/package.fidl",
    "storage_admin.fidl",
    "system_controller.fidl",
    "work_scheduler.fidl",
  ]
}
