# 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("sys_service_cpp") {
  sources = [
    "service.cc",
    "service_aggregate.cc",
    "service_watcher.cc",
    "include/lib/sys/service/cpp/service.h",
    "include/lib/sys/service/cpp/service_aggregate.h",
    "include/lib/sys/service/cpp/service_handler.h",
    "include/lib/sys/service/cpp/service_watcher.h",
  ]
  include_dirs = [ "include" ]
  public_deps = [
    "../../fidl/fuchsia.io",
    "../async-cpp",
    "../fdio",
    "../fidl_cpp",
    "../vfs_cpp",
    "../zx",
  ]
}

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