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

source_set("clock") {
  sources = [
    "clock.h",
  ]
}

static_library("encrypted_message_util") {
  sources = [
    "encrypted_message_util.cc",
    "encrypted_message_util.h",
  ]
  configs += [ "//third_party/cobalt:cobalt_config" ]

  deps = [
    ":status",
    "//garnet/public/lib/fxl",
    "//third_party/cobalt:cobalt_proto",
  ]
}

static_library("datetime_util") {
  sources = [
    "datetime_util.cc",
    "datetime_util.h",
  ]
  configs += [ "//third_party/cobalt:cobalt_config" ]
  deps = [
    "//third_party/cobalt/config:cobalt_registry_proto",
  ]
}

static_library("pem_util") {
  sources = [
    "pem_util.cc",
    "pem_util.h",
  ]
  configs += [ "//third_party/cobalt:cobalt_config" ]
  deps = [
    "//garnet/public/lib/fxl",
    "//third_party/cobalt/util/crypto_util",
  ]
}

static_library("status") {
  sources = [
    "status.cc",
    "status.h",
    "status_codes.h",
  ]
  configs += [ "//third_party/cobalt:cobalt_config" ]
}

static_library("posix_file_system") {
  sources = [
    "file_system.h",
    "posix_file_system.cc",
    "posix_file_system.h",
  ]
  configs += [ "//third_party/cobalt:cobalt_config" ]
}

static_library("consistent_proto_store") {
  sources = [
    "consistent_proto_store.cc",
    "consistent_proto_store.h",
  ]
  configs += [ "//third_party/cobalt:cobalt_config" ]
  deps = [
    ":status",
    "//third_party/protobuf:protobuf_lite",
  ]
}

static_library("proto_util") {
  sources = [
    "proto_util.cc",
    "proto_util.h",
  ]
  configs += [ "//third_party/cobalt:cobalt_config" ]
  deps = [
    "//garnet/public/lib/fxl",
    "//third_party/cobalt/util/crypto_util",
    "//third_party/protobuf:protobuf_lite",
  ]
}
