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

static_library("scheduler") {
  sources = [ "scheduler.cc" ]
  configs += [ ":target_defaults" ]
  deps = [
    "//missive/util:shared_queue",
    "//missive/util:status",
    "//missive/util:task_runner_context",
  ]
}

static_library("enqueue_job") {
  sources = [ "enqueue_job.cc" ]
  configs += [ ":target_defaults" ]
  deps = [
    ":scheduler",
    "//missive/proto:interface_proto",
    "//missive/storage:storage_module_interface",
    "//missive/util:shared_queue",
    "//missive/util:status",
    "//missive/util:task_runner_context",
  ]
}

static_library("upload_job") {
  sources = [ "upload_job.cc" ]
  configs += [ ":target_defaults" ]
  deps = [
    ":scheduler",
    "//missive/dbus:upload_client",
    "//missive/util:status",
  ]
}
