# 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() {
}

# Most third_party code should disable warnings: if we don't maintain the code, warnings are noise.
config("no_warnings") {
  cflags = [ "-w" ]
}
third_party_configs = [ ":no_warnings" ]

# Chrome's GN environment sets up a bunch of default configs we don't need/want here.
unwanted_configs = [
  "//build/config/clang:extra_warnings",
  "//build/config/clang:find_bad_constructs",
  "//build/config/compiler:chromium_code",
  "//build/config:feature_flags",
]

config("zlib_public") {
  include_dirs = [ "externals/zlib" ]
}
source_set("zlib") {
  public_configs = [ ":zlib_public" ]
  configs += third_party_configs
  configs -= unwanted_configs

  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/simd_stub.c",
    "externals/zlib/trees.c",
    "externals/zlib/uncompr.c",
    "externals/zlib/zutil.c",
  ]
}

config("libpng_public") {
  include_dirs = [ "libpng" ]
}
source_set("libpng") {
  public_configs = [ ":libpng_public" ]
  configs += third_party_configs
  configs -= unwanted_configs

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

config("libjpeg-turbo_config") {
  include_dirs = [ "externals/libjpeg-turbo" ]
}
source_set("libjpeg-turbo") {
  public_configs = [ ":libjpeg-turbo_config" ]
  configs += third_party_configs
  configs -= unwanted_configs

  sources = [
    "externals/libjpeg-turbo/jcapimin.c",
    "externals/libjpeg-turbo/jcapistd.c",
    "externals/libjpeg-turbo/jccoefct.c",
    "externals/libjpeg-turbo/jccolor.c",
    "externals/libjpeg-turbo/jcdctmgr.c",
    "externals/libjpeg-turbo/jchuff.c",
    "externals/libjpeg-turbo/jcinit.c",
    "externals/libjpeg-turbo/jcmainct.c",
    "externals/libjpeg-turbo/jcmarker.c",
    "externals/libjpeg-turbo/jcmaster.c",
    "externals/libjpeg-turbo/jcomapi.c",
    "externals/libjpeg-turbo/jcparam.c",
    "externals/libjpeg-turbo/jcphuff.c",
    "externals/libjpeg-turbo/jcprepct.c",
    "externals/libjpeg-turbo/jcsample.c",
    "externals/libjpeg-turbo/jdapimin.c",
    "externals/libjpeg-turbo/jdapistd.c",
    "externals/libjpeg-turbo/jdcoefct.c",
    "externals/libjpeg-turbo/jdcolor.c",
    "externals/libjpeg-turbo/jddctmgr.c",
    "externals/libjpeg-turbo/jdhuff.c",
    "externals/libjpeg-turbo/jdinput.c",
    "externals/libjpeg-turbo/jdmainct.c",
    "externals/libjpeg-turbo/jdmarker.c",
    "externals/libjpeg-turbo/jdmaster.c",
    "externals/libjpeg-turbo/jdmerge.c",
    "externals/libjpeg-turbo/jdphuff.c",
    "externals/libjpeg-turbo/jdpostct.c",
    "externals/libjpeg-turbo/jdsample.c",
    "externals/libjpeg-turbo/jerror.c",
    "externals/libjpeg-turbo/jfdctflt.c",
    "externals/libjpeg-turbo/jfdctfst.c",
    "externals/libjpeg-turbo/jfdctint.c",
    "externals/libjpeg-turbo/jidctflt.c",
    "externals/libjpeg-turbo/jidctfst.c",
    "externals/libjpeg-turbo/jidctint.c",
    "externals/libjpeg-turbo/jidctred.c",
    "externals/libjpeg-turbo/jmemmgr.c",
    "externals/libjpeg-turbo/jmemnobs.c",
    "externals/libjpeg-turbo/jquant1.c",
    "externals/libjpeg-turbo/jquant2.c",
    "externals/libjpeg-turbo/jsimd_none.c",
    "externals/libjpeg-turbo/jutils.c",
  ]
}

config("system_freetype2") {
  include_dirs = [ "/usr/include/freetype2" ]
  libs = [ "freetype" ]
}
group("freetype2") {
  public_configs = [ ":system_freetype2" ]
}

config("system_fontconfig") {
  libs = [ "fontconfig" ]
}
group("fontconfig") {
  public_configs = [ ":system_fontconfig" ]
}
