# 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_libpng = is_official_build
}

import("../third_party.gni")

if (skia_use_system_libpng) {
  system("libpng") {
    libs = [ "png" ]
  }
} else {
  third_party("libpng") {
    public_include_dirs = [
      ".",
      "../externals/libpng",
    ]

    defines = []
    deps = [
      "//third_party/zlib",
    ]
    sources = [
      "../externals/libpng/png.c",
      "../externals/libpng/pngerror.c",
      "../externals/libpng/pngget.c",
      "../externals/libpng/pngmem.c",
      "../externals/libpng/pngpread.c",
      "../externals/libpng/pngread.c",
      "../externals/libpng/pngrio.c",
      "../externals/libpng/pngrtran.c",
      "../externals/libpng/pngrutil.c",
      "../externals/libpng/pngset.c",
      "../externals/libpng/pngtrans.c",
      "../externals/libpng/pngwio.c",
      "../externals/libpng/pngwrite.c",
      "../externals/libpng/pngwtran.c",
      "../externals/libpng/pngwutil.c",
    ]

    if (current_cpu == "arm" || current_cpu == "arm64") {
      sources += [
        "../externals/libpng/arm/arm_init.c",
        "../externals/libpng/arm/filter_neon_intrinsics.c",
      ]
    }

    if (current_cpu == "x86" || current_cpu == "x64") {
      defines += [ "PNG_INTEL_SSE" ]
      sources += [
        "../externals/libpng/intel/filter_sse2_intrinsics.c",
        "../externals/libpng/intel/intel_init.c",
      ]
    }
  }
}
