# Copyright 2014 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.

config("libpng_config") {
  include_dirs = [
    ".",
  ]

  defines = [
    "CHROME_PNG_WRITE_SUPPORT",
    "PNG_USER_CONFIG",
  ]

  if (is_android) {
    #'toolsets': ['target', 'host'],
    defines += [
      "CHROME_PNG_READ_PACK_SUPPORT",  # Required by freetype.
    ]
  }

  if (is_win) {
    if (component_mode == "shared_library") {
      defines += [
        "PNG_USE_DLL",
        "PNG_NO_MODULEDEF",
      ]
    }
  }
}

static_library("libpng") {
  sources =  [
    "png.c",
    "png.h",
    "pngconf.h",
    "pngerror.c",
    "pnggccrd.c",
    "pngget.c",
    "pngmem.c",
    "pngpread.c",
    "pngread.c",
    "pngrio.c",
    "pngrtran.c",
    "pngrutil.c",
    "pngset.c",
    "pngtrans.c",
    "pngusr.h",
    "pngvcrd.c",
    "pngwio.c",
    "pngwrite.c",
    "pngwtran.c",
    "pngwutil.c",
  ]

  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [ "//build/config/compiler:no_chromium_code" ]

  forward_dependent_configs_from = [ "//third_party/zlib" ]

  direct_dependent_configs = [ ":libpng_config" ]

  deps =  [
    "//third_party/zlib",
  ]
}
