# 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 = [ "//src/ledger/*" ]

source_set("public") {
  sources = [
    "commit.cc",
    "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/fsl",
    "//peridot/lib/convert",
    "//peridot/lib/util:ptr",
    "//sdk/lib/fidl/cpp",
    "//src/ledger/bin/filesystem",
    "//src/ledger/lib/coroutine",
    "//src/lib/fxl",
    "//third_party/flatbuffers",
    "//zircon/public/lib/zx",
  ]

  configs += [ "//src/ledger:ledger_config" ]
}

source_set("unittests") {
  testonly = true

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

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

  configs += [ "//src/ledger:ledger_config" ]
}
