# Copyright 2017 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("//build_overrides/build.gni")

if (build_with_chromium) {
  static_library("zip") {
    sources = [
      "zip.cc",
      "zip.h",
      "zip_internal.cc",
      "zip_internal.h",
      "zip_reader.cc",
      "zip_reader.h",
      "zip_writer.cc",
      "zip_writer.h",
    ]
    deps = [
      "//base",
      "//third_party/zlib:minizip",
    ]
  }

  static_library("compression_utils") {
    sources = [
      "compression_utils.cc",
      "compression_utils.h",
    ]
    deps = [
      ":compression_utils_portable",
      "//base",
      "//third_party/zlib",
    ]
  }
}

# This allows other users of Chromium's zlib library, but don't use Chromium's
# //base, to reuse some boilerplate code.
static_library("compression_utils_portable") {
  sources = [
    "compression_utils_portable.cc",
    "compression_utils_portable.h",
  ]
  deps = [
    "//third_party/zlib",
  ]
}
