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

source_set("impl") {
  sources = [
    "aggregator.cc",
    "aggregator.h",
    "batch_download.cc",
    "batch_download.h",
    "batch_upload.cc",
    "batch_upload.h",
    "clock_pack.cc",
    "clock_pack.h",
    "constants.h",
    "entry_payload_encoding.cc",
    "entry_payload_encoding.h",
    "ledger_sync_impl.cc",
    "ledger_sync_impl.h",
    "page_download.cc",
    "page_download.h",
    "page_sync_impl.cc",
    "page_sync_impl.h",
    "page_upload.cc",
    "page_upload.h",
    "status.cc",
    "status.h",
    "user_sync_impl.cc",
    "user_sync_impl.h",
  ]

  public_deps = [
    ":entry_payload",
    "//src/ledger/bin/cloud_sync/public",
    "//src/ledger/bin/encryption/impl",
    "//src/ledger/bin/encryption/public",
    "//src/ledger/bin/environment",
    "//src/ledger/bin/fidl/include",
    "//src/ledger/bin/storage/public",
    "//src/ledger/fidl/fuchsia.ledger.cloud",
    "//src/ledger/lib/backoff",
    "//src/ledger/lib/coroutine",
    "//src/ledger/lib/logging",
  ]

  deps = [
    "//src/ledger/bin/encryption/primitives",
    "//src/ledger/lib/encoding",
    "//src/ledger/lib/vmo",
    "//zircon/public/lib/trace",
  ]

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

source_set("unittests") {
  testonly = true

  sources = [
    "aggregator_unittest.cc",
    "batch_download_unittest.cc",
    "batch_upload_unittest.cc",
    "clock_pack_unittest.cc",
    "entry_payload_encoding_unittest.cc",
    "ledger_sync_impl_unittest.cc",
    "page_download_unittest.cc",
    "page_sync_impl_unittest.cc",
    "page_upload_unittest.cc",
    "user_sync_impl_unittest.cc",
  ]

  deps = [
    ":impl",
    "//src/ledger/bin/cloud_sync/impl/testing",
    "//src/ledger/bin/cloud_sync/testing",
    "//src/ledger/bin/encryption/fake",
    "//src/ledger/bin/storage/fake:lib",
    "//src/ledger/bin/storage/public",
    "//src/ledger/bin/storage/testing",
    "//src/ledger/bin/testing:lib",
    "//src/ledger/lib/backoff/testing",
    "//src/ledger/lib/callback",
    "//src/ledger/lib/encoding",
    "//src/ledger/lib/logging",
    "//src/ledger/lib/loop_fixture",
    "//src/ledger/lib/vmo",
    "//third_party/abseil-cpp",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]

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

flatbuffer("entry_payload") {
  sources = [ "entry_payload.fbs" ]

  extra_configs = [ "//src/ledger:ledger_config" ]
}
