# Copyright 2021 The Chromium OS 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("//common-mk/pkg_config.gni")
import("//common-mk/proto_library.gni")

pkg_config("target_defaults") {
  pkg_deps = [
    "libbrillo",
    "libchrome",
  ]

  if (use.fuzzer) {
    pkg_deps += [ "protobuf" ]
  } else {
    pkg_deps += [ "protobuf-lite" ]
  }
}

static_library("storage_configuration") {
  configs += [ ":target_defaults" ]
  sources = [ "storage_configuration.cc" ]
}

static_library("storage_uploader_interface") {
  configs += [ ":target_defaults" ]
  sources = [ "storage_uploader_interface.cc" ]
  deps = [
    "//missive/proto:record_constants",
    "//missive/proto:record_proto",
    "//missive/proto:status_proto",
    "//missive/util:status",
  ]
}

static_library("storage_queue") {
  configs += [ ":target_defaults" ]
  sources = [ "storage_queue.cc" ]
  deps = [
    ":storage_configuration",
    ":storage_uploader_interface",
    "//missive/encryption:encryption_module_interface",
    "//missive/encryption:verification",
    "//missive/proto:record_constants",
    "//missive/proto:record_proto",
    "//missive/storage/resources:resource_interface",
    "//missive/util:status",
    "//missive/util:status_macros",
    "//missive/util:task_runner_context",
  ]
}

static_library("storage_module") {
  configs += [ ":target_defaults" ]
  sources = [ "storage_module.cc" ]
  public_deps = [ ":storage_configuration" ]
  deps = [
    ":storage",
    ":storage_module_interface",
    ":storage_uploader_interface",
    "//missive/encryption:encryption_module",
    "//missive/encryption:encryption_module_interface",
    "//missive/proto:record_constants",
    "//missive/proto:record_proto",
    "//missive/util:status",
  ]
}

static_library("storage") {
  configs += [ ":target_defaults" ]
  sources = [ "storage.cc" ]
  public_deps = [ ":storage_configuration" ]
  deps = [
    ":storage_queue",
    ":storage_uploader_interface",
    "//missive/encryption:encryption_module",
    "//missive/encryption:encryption_module_interface",
    "//missive/encryption:verification",
    "//missive/proto:record_constants",
    "//missive/proto:record_proto",
    "//missive/util:status",
    "//missive/util:status_macros",
    "//missive/util:task_runner_context",
  ]
}

static_library("storage_module_interface") {
  configs += [ ":target_defaults" ]
  sources = [ "storage_module_interface.cc" ]
  deps = [
    "//missive/proto:record_constants",
    "//missive/proto:record_proto",
    "//missive/util:status",
  ]
}

static_library("storage_test_support") {
  configs += [ ":target_defaults" ]
  sources = [ "test_storage_module.cc" ]
  public_deps = [
    ":storage",
    ":storage_configuration",
    ":storage_module",
    ":storage_queue",
    "//missive/proto:record_constants",
    "//missive/proto:record_proto",
    "//missive/util:status",
  ]
}
