# 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.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",
    "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",
    "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" ]
}
