# Copyright 2021 The Chromium 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("compression_module") {
  sources = [
    "compression_module.cc",
    "compression_module.h",
  ]
  libs = [ "snappy" ]
  configs += [ ":target_defaults" ]
  public_deps = [ "//missive/storage:storage_configuration" ]
  deps = [
    "//missive/proto:record_constants",
    "//missive/proto:record_proto",
    "//missive/util:status",
  ]
}

static_library("compression_test_support") {
  sources = [
    "decompression.cc",
    "scoped_compression_feature.cc",
    "test_compression_module.cc",
  ]
  configs += [ ":target_defaults" ]
  deps = [
    ":compression_module",
    "//missive/proto:record_proto",
    "//missive/util:status",
    "//missive/util:status_macros",
  ]
}

source_set("unit_tests") {
  sources = [ "compression_module_test.cc" ]
  deps = [
    ":compression_test_support",
    "//missive/proto:record_proto",
    "//missive/util:status",
    "//missive/util:status_macros",
    "//missive/util:test_callbacks_support",
  ]

  configs += [ ":target_defaults" ]
}
