# 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(fxb/35879): Remove lint exclusions by fixing known FIDL lint violations in this target
  excluded_checks = [
    "invalid-copyright-for-platform-source-library",
    "string-bounds-not-specified",
    "vector-bounds-not-specified",
  ]

  sdk_category = "internal"

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

  sources = [
    "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/relative_refs.fidl",
    "decls/resolver_decl.fidl",
    "decls/runner_decl.fidl",
    "decls/storage_decl.fidl",
    "decls/use_decl.fidl",
    "events.fidl",
    "realm.fidl",
    "runtime/component.fidl",
    "runtime/component_resolver.fidl",
    "runtime/package.fidl",
    "system_controller.fidl",
    "work_scheduler.fidl",
  ]
}
