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

import("//third_party/flatbuffers/flatbuffer.gni")

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

group("impl") {
  deps = [
    ":lib",
    "//peridot/bin/ledger/storage/impl/btree",
  ]
}

flatbuffer("object_identifier") {
  sources = [
    "object_identifier.fbs",
  ]

  extra_configs = [ "//peridot/bin/ledger:ledger_config" ]
}

flatbuffer("commit_storage") {
  sources = [
    "commit.fbs",
  ]

  public_deps = [
    ":object_identifier",
  ]

  extra_configs = [ "//peridot/bin/ledger:ledger_config" ]
}

flatbuffer("file_index") {
  sources = [
    "file_index.fbs",
  ]

  extra_configs = [ "//peridot/bin/ledger:ledger_config" ]
}

source_set("object_identifier_lib") {
  sources = [
    "constants.h",
    "object_digest.cc",
    "object_digest.h",
    "object_identifier_encoding.cc",
    "object_identifier_encoding.h",
  ]

  deps = [
    "//peridot/bin/ledger/encryption/primitives",
    "//peridot/bin/ledger/encryption/public",
  ]

  public_deps = [
    ":object_identifier",
    "//peridot/bin/ledger/storage/public",
  ]

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

source_set("lib") {
  sources = [
    "commit_impl.cc",
    "commit_impl.h",
    "data_serialization.h",
    "db_serialization.cc",
    "db_serialization.h",
    "file_index.cc",
    "file_index.h",
    "journal_impl.cc",
    "journal_impl.h",
    "ledger_storage_impl.cc",
    "ledger_storage_impl.h",
    "leveldb.cc",
    "leveldb.h",
    "leveldb_factory.cc",
    "leveldb_factory.h",
    "object_impl.cc",
    "object_impl.h",
    "page_db.h",
    "page_db_batch_impl.cc",
    "page_db_batch_impl.h",
    "page_db_impl.cc",
    "page_db_impl.h",
    "page_storage_impl.cc",
    "page_storage_impl.h",
    "split.cc",
    "split.h",
  ]

  deps = [
    ":commit_storage",
    ":file_index",
    ":object_identifier_lib",
    "//garnet/public/lib/callback",
    "//garnet/public/lib/fidl/cpp",
    "//garnet/public/lib/fxl",
    "//peridot/bin/ledger/cobalt",
    "//peridot/bin/ledger/encryption/impl",
    "//peridot/bin/ledger/encryption/primitives",
    "//peridot/bin/ledger/encryption/public",
    "//peridot/bin/ledger/environment",
    "//peridot/bin/ledger/filesystem",
    "//peridot/bin/ledger/lock",
    "//peridot/bin/ledger/storage/impl/btree:lib",
    "//peridot/bin/ledger/storage/public",
    "//peridot/lib/base64url",
    "//zircon/public/lib/trace",
  ]

  public_deps = [
    ":object_identifier_lib",
    "//peridot/bin/ledger/coroutine",
    "//peridot/lib/convert",
    "//peridot/third_party/bup",
    "//third_party/leveldb",
  ]

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

source_set("test_utils") {
  testonly = true

  sources = [
    "storage_test_utils.cc",
    "storage_test_utils.h",
  ]

  deps = [
    ":lib",
    "//garnet/public/lib/callback",
    "//peridot/bin/ledger/encryption/fake",
    "//peridot/bin/ledger/encryption/primitives",
  ]

  public_deps = [
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/fxl",
    "//peridot/bin/ledger/storage/impl/btree:lib",
    "//peridot/bin/ledger/storage/public",
    "//peridot/bin/ledger/testing:lib",
    "//peridot/lib/rng",
  ]

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

source_set("unittests") {
  testonly = true

  sources = [
    "commit_impl_unittest.cc",
    "commit_random_impl.cc",
    "commit_random_impl.h",
    "file_index_unittest.cc",
    "ledger_storage_unittest.cc",
    "leveldb_factory_unittest.cc",
    "object_digest_unittest.cc",
    "object_impl_unittest.cc",
    "page_db_empty_impl.cc",
    "page_db_empty_impl.h",
    "page_db_unittest.cc",
    "page_storage_unittest.cc",
    "split_unittest.cc",
  ]

  deps = [
    ":file_index",
    ":lib",
    ":test_utils",
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/fxl",
    "//garnet/public/lib/fxl/test",
    "//peridot/bin/ledger/cloud_sync/impl",
    "//peridot/bin/ledger/encryption/fake",
    "//peridot/bin/ledger/encryption/primitives",
    "//peridot/bin/ledger/storage/fake:lib",
    "//peridot/bin/ledger/storage/impl/btree:lib",
    "//peridot/bin/ledger/storage/public",
    "//peridot/bin/ledger/storage/testing",
    "//peridot/bin/ledger/testing:lib",
    "//peridot/lib/rng",
    "//peridot/lib/scoped_tmpfs",
    "//third_party/googletest:gtest",
  ]

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