# Copyright 2016 Google Inc.
#
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

declare_args() {
  skia_use_system_zlib = is_official_build
}

import("../third_party.gni")

if (skia_use_system_zlib) {
  system("zlib") {
    libs = [ "z" ]
  }
} else {
  third_party("zlib") {
    public_include_dirs = [ "../externals/zlib" ]

    deps = [ ":zlib_x86" ]
    sources = [
      "../externals/zlib/adler32.c",
      "../externals/zlib/compress.c",
      "../externals/zlib/crc32.c",
      "../externals/zlib/deflate.c",
      "../externals/zlib/gzclose.c",
      "../externals/zlib/gzlib.c",
      "../externals/zlib/gzread.c",
      "../externals/zlib/gzwrite.c",
      "../externals/zlib/infback.c",
      "../externals/zlib/inffast.c",
      "../externals/zlib/inflate.c",
      "../externals/zlib/inftrees.c",
      "../externals/zlib/trees.c",
      "../externals/zlib/uncompr.c",
      "../externals/zlib/zutil.c",
    ]
  }
}

third_party("zlib_x86") {
  public_include_dirs = []
  if (target_cpu == "x86" || target_cpu == "x64") {
    sources = [
      "../externals/zlib/crc_folding.c",
      "../externals/zlib/fill_window_sse.c",
      "../externals/zlib/x86.c",
    ]
    if (!is_win || is_clang) {
      cflags_c = [
        "-msse4.2",
        "-mpclmul",
      ]
    }
  } else {
    sources = [ "../externals/zlib/simd_stub.c" ]
  }
}
