# Copyright 2016 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/shim_headers.gni")

shim_headers("zlib_shim") {
  root_path = "."
  headers = [ "zlib.h" ]
}

config("system_zlib") {
  defines = [ "USE_SYSTEM_ZLIB=1" ]
}

config("zlib_config") {
  configs = [ ":system_zlib" ]
}

source_set("zlib") {
  deps = [ ":zlib_shim" ]
  libs = [ "z" ]
  public_configs = [ ":system_zlib" ]
}

shim_headers("minizip_shim") {
  root_path = "contrib"
  headers = [
    "minizip/crypt.h",
    "minizip/ioapi.h",
    "minizip/iowin32.h",
    "minizip/mztools.h",
    "minizip/unzip.h",
    "minizip/zip.h",
  ]
}

source_set("minizip") {
  deps = [ ":minizip_shim" ]
  libs = [ "minizip" ]
}

static_library("zip") {
  sources = [
    "google/zip.cc",
    "google/zip.h",
    "google/zip_internal.cc",
    "google/zip_internal.h",
    "google/zip_reader.cc",
    "google/zip_reader.h",
  ]
  deps = [
    ":minizip",
    "//base",
  ]
}

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