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

visibility = [ "//peridot/bin/ledger/*" ]

source_set("public") {
  sources = [
    "commit.h",
    "commit_watcher.h",
    "constants.cc",
    "constants.h",
    "data_source.cc",
    "data_source.h",
    "db.h",
    "db_factory.h",
    "iterator.h",
    "journal.h",
    "ledger_storage.h",
    "object.cc",
    "object.h",
    "page_storage.cc",
    "page_storage.h",
    "page_sync_client.h",
    "page_sync_delegate.h",
    "read_data_source.cc",
    "read_data_source.h",
    "types.cc",
    "types.h",
  ]

  public_deps = [
    "//garnet/public/lib/callback",
    "//garnet/public/lib/fidl/cpp",
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/fxl",
    "//peridot/bin/ledger/coroutine",
    "//peridot/bin/ledger/filesystem",
    "//peridot/lib/convert",
    "//peridot/lib/util:ptr",
    "//third_party/flatbuffers",
    "//zircon/public/lib/zx",
  ]

  configs += [ "//peridot/bin/ledger:ledger_config" ]
}

source_set("unittests") {
  testonly = true

  sources = [
    "data_source_unittest.cc",
    "object_unittest.cc",
    "read_data_source_unittest.cc",
  ]

  deps = [
    ":public",
    "//peridot/bin/ledger/testing:lib",
    "//peridot/lib/socket",
  ]

  configs += [ "//peridot/bin/ledger:ledger_config" ]
}
