# Copyright 2020 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.

# DO NOT MANUALLY EDIT!
# Generated by //scripts/sdk/gn/generate.py.


import("../../build/fuchsia_sdk_pkg.gni")

fuchsia_sdk_pkg("inspect_service_cpp") {
  sources = [
    "reader.cc",
    "service.cc",
    "include/lib/inspect/service/cpp/reader.h",
    "include/lib/inspect/service/cpp/service.h",
  ]
  include_dirs = [ "include" ]
  public_deps = [
    "../../fidl/fuchsia.inspect",
    "../async-cpp",
    "../inspect",
  ]
}

group("all"){
  deps = [
    ":inspect_service_cpp",
  ]
}
