# 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",
      ]
    }
  }
}

source_set("libpng_sources") {
  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" ]

  if (is_win) {
    cflags = [ "/wd4267" ]  # TODO(jschuh): http://crbug.com/167187

    if (component_mode == "shared_library") {
      defines = [ "PNG_BUILD_DLL" ]
    }
  }

  public_configs = [ ":libpng_config" ]

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

if (is_win) {
  component("libpng") {
    public_deps = [
      ":libpng_sources",
    ]
  }
} else {
  group("libpng") {
    public_deps = [
      ":libpng_sources",
    ]
  }
}
