# Copyright 2014 PDFium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/config/arm.gni")
import("//build_overrides/build.gni")
import("../pdfium.gni")

group("third_party") {
  deps = [
    ":bigint",
    ":pdfium_base",
  ]
  if (pdf_bundle_freetype) {
    deps += [ ":fx_freetype" ]
  }
}

config("pdfium_third_party_config") {
  configs = [ "..:pdfium_common_config" ]
}

static_library("bigint") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    ":pdfium_third_party_config",
  ]
  sources = [
    "bigint/BigInteger.cc",
    "bigint/BigInteger.hh",
    "bigint/BigIntegerLibrary.hh",
    "bigint/BigIntegerUtils.cc",
    "bigint/BigIntegerUtils.hh",
    "bigint/BigUnsigned.cc",
    "bigint/BigUnsigned.hh",
    "bigint/BigUnsignedInABase.cc",
    "bigint/BigUnsignedInABase.hh",
    "bigint/NumberlikeArray.hh",
  ]
}

if (pdf_bundle_freetype) {
  config("fx_freetype_warnings") {
    visibility = [ ":*" ]
    if (is_clang) {
      # open_face_PS_from_sfnt_stream() and open_face_from_buffer() in
      # ftbase.h are unused.
      #
      # ttgload.c casts from unsigned int to unsigned long to void*.
      cflags = [
        "-Wno-unused-function",
        "-Wno-int-to-void-pointer-cast",
      ]
    }
  }

  config("freetype_public_includes_config") {
    # The relative freetype/include path points to PDFium's custom config.
    # The absolute path points to whatever copy of FreeType is in
    # //third_party/freetype.
    include_dirs = [
      "freetype/include",
      "//third_party/freetype/src/include",
    ]
    defines = [
      "FT_CONFIG_MODULES_H=<freetype-custom-config/ftmodule.h>",
      "FT_CONFIG_OPTIONS_H=<freetype-custom-config/ftoption.h>",
    ]
  }

  # Tests may link against this even if the production library doesn't,
  # so it needs to be separate from it.
  static_library("fx_freetype") {
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [
      "//build/config/compiler:no_chromium_code",
      ":pdfium_third_party_config",

      # Must be after no_chromium_code for warning flags to be ordered correctly.
      ":fx_freetype_warnings",
    ]

    public_configs = [ ":freetype_public_includes_config" ]

    defines = [ "FT2_BUILD_LIBRARY" ]
    sources = [
      "//third_party/freetype/src/include/freetype/config/ftconfig.h",
      "//third_party/freetype/src/include/freetype/config/ftheader.h",
      "//third_party/freetype/src/include/freetype/config/ftstdlib.h",
      "//third_party/freetype/src/include/freetype/freetype.h",
      "//third_party/freetype/src/include/freetype/ftadvanc.h",
      "//third_party/freetype/src/include/freetype/ftbitmap.h",
      "//third_party/freetype/src/include/freetype/ftcffdrv.h",
      "//third_party/freetype/src/include/freetype/fterrdef.h",
      "//third_party/freetype/src/include/freetype/fterrors.h",
      "//third_party/freetype/src/include/freetype/ftglyph.h",
      "//third_party/freetype/src/include/freetype/ftgzip.h",
      "//third_party/freetype/src/include/freetype/ftimage.h",
      "//third_party/freetype/src/include/freetype/ftincrem.h",
      "//third_party/freetype/src/include/freetype/ftlcdfil.h",
      "//third_party/freetype/src/include/freetype/ftlist.h",
      "//third_party/freetype/src/include/freetype/ftmm.h",
      "//third_party/freetype/src/include/freetype/ftmodapi.h",
      "//third_party/freetype/src/include/freetype/ftmoderror.h",
      "//third_party/freetype/src/include/freetype/ftobjs.h",
      "//third_party/freetype/src/include/freetype/ftotval.h",
      "//third_party/freetype/src/include/freetype/ftoutln.h",
      "//third_party/freetype/src/include/freetype/ftrender.h",
      "//third_party/freetype/src/include/freetype/ftsizes.h",
      "//third_party/freetype/src/include/freetype/ftsnames.h",
      "//third_party/freetype/src/include/freetype/ftstream.h",
      "//third_party/freetype/src/include/freetype/ftsystem.h",
      "//third_party/freetype/src/include/freetype/fttrigon.h",
      "//third_party/freetype/src/include/freetype/ftttdrv.h",
      "//third_party/freetype/src/include/freetype/fttypes.h",
      "//third_party/freetype/src/include/freetype/internal/autohint.h",
      "//third_party/freetype/src/include/freetype/internal/ftcalc.h",
      "//third_party/freetype/src/include/freetype/internal/ftdebug.h",
      "//third_party/freetype/src/include/freetype/internal/ftdriver.h",
      "//third_party/freetype/src/include/freetype/internal/ftgloadr.h",
      "//third_party/freetype/src/include/freetype/internal/fthash.h",
      "//third_party/freetype/src/include/freetype/internal/ftmemory.h",
      "//third_party/freetype/src/include/freetype/internal/ftobjs.h",
      "//third_party/freetype/src/include/freetype/internal/ftpic.h",
      "//third_party/freetype/src/include/freetype/internal/ftrfork.h",
      "//third_party/freetype/src/include/freetype/internal/ftserv.h",
      "//third_party/freetype/src/include/freetype/internal/ftstream.h",
      "//third_party/freetype/src/include/freetype/internal/ftvalid.h",
      "//third_party/freetype/src/include/freetype/internal/internal.h",
      "//third_party/freetype/src/include/freetype/internal/psaux.h",
      "//third_party/freetype/src/include/freetype/internal/pshints.h",
      "//third_party/freetype/src/include/freetype/internal/services/svcid.h",
      "//third_party/freetype/src/include/freetype/internal/services/svfntfmt.h",
      "//third_party/freetype/src/include/freetype/internal/services/svgldict.h",
      "//third_party/freetype/src/include/freetype/internal/services/svkern.h",
      "//third_party/freetype/src/include/freetype/internal/services/svmetric.h",
      "//third_party/freetype/src/include/freetype/internal/services/svmm.h",
      "//third_party/freetype/src/include/freetype/internal/services/svpostnm.h",
      "//third_party/freetype/src/include/freetype/internal/services/svprop.h",
      "//third_party/freetype/src/include/freetype/internal/services/svpscmap.h",
      "//third_party/freetype/src/include/freetype/internal/services/svpsinfo.h",
      "//third_party/freetype/src/include/freetype/internal/services/svsfnt.h",
      "//third_party/freetype/src/include/freetype/internal/services/svttcmap.h",
      "//third_party/freetype/src/include/freetype/internal/services/svtteng.h",
      "//third_party/freetype/src/include/freetype/internal/services/svttglyf.h",
      "//third_party/freetype/src/include/freetype/internal/sfnt.h",
      "//third_party/freetype/src/include/freetype/internal/t1types.h",
      "//third_party/freetype/src/include/freetype/internal/tttypes.h",
      "//third_party/freetype/src/include/freetype/t1tables.h",
      "//third_party/freetype/src/include/freetype/ttnameid.h",
      "//third_party/freetype/src/include/freetype/tttables.h",
      "//third_party/freetype/src/include/freetype/tttags.h",
      "//third_party/freetype/src/include/ft2build.h",
      "//third_party/freetype/src/src/base/ftbase.c",
      "//third_party/freetype/src/src/base/ftbase.h",
      "//third_party/freetype/src/src/base/ftbitmap.c",
      "//third_party/freetype/src/src/base/ftglyph.c",
      "//third_party/freetype/src/src/base/ftinit.c",
      "//third_party/freetype/src/src/base/ftlcdfil.c",
      "//third_party/freetype/src/src/base/ftmm.c",
      "//third_party/freetype/src/src/base/ftsystem.c",
      "//third_party/freetype/src/src/cff/cff.c",
      "//third_party/freetype/src/src/cff/cffobjs.h",
      "//third_party/freetype/src/src/cff/cfftypes.h",
      "//third_party/freetype/src/src/cid/type1cid.c",
      "//third_party/freetype/src/src/psaux/psaux.c",
      "//third_party/freetype/src/src/pshinter/pshinter.c",
      "//third_party/freetype/src/src/psnames/psmodule.c",
      "//third_party/freetype/src/src/raster/raster.c",
      "//third_party/freetype/src/src/sfnt/sfnt.c",
      "//third_party/freetype/src/src/smooth/smooth.c",
      "//third_party/freetype/src/src/truetype/truetype.c",
      "//third_party/freetype/src/src/type1/type1.c",
    ]
    if (pdf_use_skia || pdf_use_skia_paths) {
      sources += [
        "//third_party/freetype/src/include/freetype/ftfntfmt.h",
        "//third_party/freetype/src/include/freetype/ftsynth.h",
        "//third_party/freetype/src/src/base/ftfntfmt.c",
        "//third_party/freetype/src/src/base/ftfstype.c",
        "//third_party/freetype/src/src/base/fttype1.c",
      ]
    }
  }
}

if (!pdf_use_skia && !pdf_use_skia_paths) {
  config("fx_agg_warnings") {
    visibility = [ ":*" ]
    if (is_clang) {
      # calc_butt_cap() in agg_vcgen_stroke.cpp is unused.
      cflags = [ "-Wno-unused-function" ]
    }
  }

  static_library("fx_agg") {
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [
      "//build/config/compiler:no_chromium_code",
      ":pdfium_third_party_config",

      # Must be after no_chromium_code for warning flags to be ordered correctly.
      ":fx_agg_warnings",
    ]
    sources = [
      "agg23/agg_basics.h",
      "agg23/agg_clip_liang_barsky.h",
      "agg23/agg_conv_dash.h",
      "agg23/agg_conv_stroke.h",
      "agg23/agg_curves.cpp",
      "agg23/agg_curves.h",
      "agg23/agg_path_storage.cpp",
      "agg23/agg_path_storage.h",
      "agg23/agg_rasterizer_scanline_aa.cpp",
      "agg23/agg_rasterizer_scanline_aa.h",
      "agg23/agg_renderer_scanline.h",
      "agg23/agg_rendering_buffer.h",
      "agg23/agg_scanline_u.h",
      "agg23/agg_vcgen_dash.cpp",
      "agg23/agg_vcgen_stroke.cpp",
    ]
    deps = [
      "..:fxcrt",
    ]
  }
}

config("fx_lcms2_warnings") {
  visibility = [ ":*" ]
  if (is_clang) {
    cflags = [
      # cmslut.cc is sloppy with aggregate initialization. Version 2.7 of this
      # library doesn't appear to have this problem.
      "-Wno-missing-braces",

      # FindPrev() in cmsplugin.c is unused.
      "-Wno-unused-function",
    ]
  }
}

static_library("fx_lcms2") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    ":pdfium_third_party_config",

    # Must be after no_chromium_code for warning flags to be ordered correctly.
    ":fx_lcms2_warnings",
  ]
  sources = [
    "lcms2-2.6/include/lcms2.h",
    "lcms2-2.6/include/lcms2_plugin.h",
    "lcms2-2.6/src/cmscam02.c",
    "lcms2-2.6/src/cmscgats.c",
    "lcms2-2.6/src/cmscnvrt.c",
    "lcms2-2.6/src/cmserr.c",
    "lcms2-2.6/src/cmsgamma.c",
    "lcms2-2.6/src/cmsgmt.c",
    "lcms2-2.6/src/cmshalf.c",
    "lcms2-2.6/src/cmsintrp.c",
    "lcms2-2.6/src/cmsio0.c",
    "lcms2-2.6/src/cmsio1.c",
    "lcms2-2.6/src/cmslut.c",
    "lcms2-2.6/src/cmsmd5.c",
    "lcms2-2.6/src/cmsmtrx.c",
    "lcms2-2.6/src/cmsnamed.c",
    "lcms2-2.6/src/cmsopt.c",
    "lcms2-2.6/src/cmspack.c",
    "lcms2-2.6/src/cmspcs.c",
    "lcms2-2.6/src/cmsplugin.c",
    "lcms2-2.6/src/cmsps2.c",
    "lcms2-2.6/src/cmssamp.c",
    "lcms2-2.6/src/cmssm.c",
    "lcms2-2.6/src/cmstypes.c",
    "lcms2-2.6/src/cmsvirt.c",
    "lcms2-2.6/src/cmswtpnt.c",
    "lcms2-2.6/src/cmsxform.c",
  ]
}

# This is only used for standalone builds.
config("jpeg_warnings") {
  visibility = [ ":*" ]
  if (is_clang) {
    cflags = [ "-Wno-shift-negative-value" ]
  }
}

static_library("jpeg") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    ":pdfium_third_party_config",

    # Must be after no_chromium_code for warning flags to be ordered correctly.
    ":jpeg_warnings",
  ]
  sources = [
    "libjpeg/cderror.h",
    "libjpeg/cdjpeg.h",
    "libjpeg/fpdfapi_jcapimin.c",
    "libjpeg/fpdfapi_jcapistd.c",
    "libjpeg/fpdfapi_jccoefct.c",
    "libjpeg/fpdfapi_jccolor.c",
    "libjpeg/fpdfapi_jcdctmgr.c",
    "libjpeg/fpdfapi_jchuff.c",
    "libjpeg/fpdfapi_jcinit.c",
    "libjpeg/fpdfapi_jcmainct.c",
    "libjpeg/fpdfapi_jcmarker.c",
    "libjpeg/fpdfapi_jcmaster.c",
    "libjpeg/fpdfapi_jcomapi.c",
    "libjpeg/fpdfapi_jcparam.c",
    "libjpeg/fpdfapi_jcphuff.c",
    "libjpeg/fpdfapi_jcprepct.c",
    "libjpeg/fpdfapi_jcsample.c",
    "libjpeg/fpdfapi_jctrans.c",
    "libjpeg/fpdfapi_jdapimin.c",
    "libjpeg/fpdfapi_jdapistd.c",
    "libjpeg/fpdfapi_jdcoefct.c",
    "libjpeg/fpdfapi_jdcolor.c",
    "libjpeg/fpdfapi_jddctmgr.c",
    "libjpeg/fpdfapi_jdhuff.c",
    "libjpeg/fpdfapi_jdinput.c",
    "libjpeg/fpdfapi_jdmainct.c",
    "libjpeg/fpdfapi_jdmarker.c",
    "libjpeg/fpdfapi_jdmaster.c",
    "libjpeg/fpdfapi_jdmerge.c",
    "libjpeg/fpdfapi_jdphuff.c",
    "libjpeg/fpdfapi_jdpostct.c",
    "libjpeg/fpdfapi_jdsample.c",
    "libjpeg/fpdfapi_jdtrans.c",
    "libjpeg/fpdfapi_jerror.c",
    "libjpeg/fpdfapi_jfdctfst.c",
    "libjpeg/fpdfapi_jfdctint.c",
    "libjpeg/fpdfapi_jidctfst.c",
    "libjpeg/fpdfapi_jidctint.c",
    "libjpeg/fpdfapi_jidctred.c",
    "libjpeg/fpdfapi_jmemmgr.c",
    "libjpeg/fpdfapi_jmemnobs.c",
    "libjpeg/fpdfapi_jutils.c",
    "libjpeg/jchuff.h",
    "libjpeg/jconfig.h",
    "libjpeg/jdct.h",
    "libjpeg/jdhuff.h",
    "libjpeg/jerror.h",
    "libjpeg/jinclude.h",
    "libjpeg/jmemsys.h",
    "libjpeg/jmorecfg.h",
    "libjpeg/jpegint.h",
    "libjpeg/jpeglib.h",
    "libjpeg/jversion.h",
    "libjpeg/makefile",
    "libjpeg/transupp.h",
  ]
  deps = [
    "..:fxcrt",
  ]
}

config("fx_libopenjpeg_warnings") {
  visibility = [ ":*" ]
  if (is_win) {
    cflags = [
      # Signed/unsigned comparisons.
      "/wd4018",
    ]
  }
}

static_library("fx_libopenjpeg") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    ":pdfium_third_party_config",

    # Must be after no_chromium_code for warning flags to be ordered correctly.
    ":fx_libopenjpeg_warnings",
  ]
  sources = [
    "libopenjpeg20/bio.c",
    "libopenjpeg20/cio.c",
    "libopenjpeg20/dwt.c",
    "libopenjpeg20/event.c",
    "libopenjpeg20/function_list.c",
    "libopenjpeg20/image.c",
    "libopenjpeg20/invert.c",
    "libopenjpeg20/j2k.c",
    "libopenjpeg20/jp2.c",
    "libopenjpeg20/mct.c",
    "libopenjpeg20/mqc.c",
    "libopenjpeg20/openjpeg.c",
    "libopenjpeg20/opj_clock.c",
    "libopenjpeg20/pi.c",
    "libopenjpeg20/raw.c",
    "libopenjpeg20/t1.c",
    "libopenjpeg20/t2.c",
    "libopenjpeg20/tcd.c",
    "libopenjpeg20/tgt.c",
  ]
}

static_library("fx_lpng") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    ":pdfium_third_party_config",
  ]
  sources = [
    "libpng16/png.c",
    "libpng16/png.h",
    "libpng16/pngconf.h",
    "libpng16/pngdebug.h",
    "libpng16/pngerror.c",
    "libpng16/pngget.c",
    "libpng16/pnginfo.h",
    "libpng16/pnglibconf.h",
    "libpng16/pngmem.c",
    "libpng16/pngpread.c",
    "libpng16/pngprefix.h",
    "libpng16/pngpriv.h",
    "libpng16/pngread.c",
    "libpng16/pngrio.c",
    "libpng16/pngrtran.c",
    "libpng16/pngrutil.c",
    "libpng16/pngset.c",
    "libpng16/pngstruct.h",
    "libpng16/pngtrans.c",
    "libpng16/pngwio.c",
    "libpng16/pngwrite.c",
    "libpng16/pngwtran.c",
    "libpng16/pngwutil.c",
  ]

  defines = []
  cflags = []
  deps = [
    "//third_party/zlib",
  ]

  if (current_cpu == "x86" || current_cpu == "x64") {
    sources += [
      "libpng16/contrib/intel/filter_sse2_intrinsics.c",
      "libpng16/contrib/intel/intel_init.c",
    ]
    defines += [ "PNG_INTEL_SSE_OPT=1" ]
  } else if ((current_cpu == "arm" || current_cpu == "arm64") && arm_use_neon) {
    sources += [
      "libpng16/arm/arm_init.c",
      "libpng16/arm/filter_neon_intrinsics.c",
    ]
    defines += [
      "PNG_ARM_NEON_OPT=2",
      "PNG_ARM_NEON_IMPLEMENTATION=1",
    ]
  }

  if (is_win) {
    # Unary minus applied to unsigned type.
    cflags += [ "/wd4146" ]
  }
}

if (pdf_enable_xfa) {
  static_library("fx_tiff") {
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [
      "//build/config/compiler:no_chromium_code",
      ":pdfium_third_party_config",
    ]
    if (is_win) {
      # Need to undefine the macro since it is redefined in
      # tif_ojpeg.c and tif_jpeg.c.
      configs -= [ "//build/config/win:lean_and_mean" ]
    }
    deps = [
      "//third_party:jpeg",
      "//third_party/zlib",
    ]
    sources = [
      "libtiff/tif_aux.c",
      "libtiff/tif_close.c",
      "libtiff/tif_codec.c",
      "libtiff/tif_color.c",
      "libtiff/tif_compress.c",
      "libtiff/tif_dir.c",
      "libtiff/tif_dirinfo.c",
      "libtiff/tif_dirread.c",
      "libtiff/tif_dirwrite.c",
      "libtiff/tif_dumpmode.c",
      "libtiff/tif_error.c",
      "libtiff/tif_extension.c",
      "libtiff/tif_fax3.c",
      "libtiff/tif_fax3sm.c",
      "libtiff/tif_flush.c",
      "libtiff/tif_getimage.c",
      "libtiff/tif_jpeg.c",
      "libtiff/tif_luv.c",
      "libtiff/tif_lzw.c",
      "libtiff/tif_next.c",
      "libtiff/tif_ojpeg.c",
      "libtiff/tif_open.c",
      "libtiff/tif_packbits.c",
      "libtiff/tif_pixarlog.c",
      "libtiff/tif_predict.c",
      "libtiff/tif_print.c",
      "libtiff/tif_read.c",
      "libtiff/tif_strip.c",
      "libtiff/tif_swab.c",
      "libtiff/tif_thunder.c",
      "libtiff/tif_tile.c",
      "libtiff/tif_version.c",
      "libtiff/tif_warning.c",
      "libtiff/tif_write.c",
      "libtiff/tif_zip.c",
      "libtiff/tiffiop.h",
      "libtiff/tiffvers.h",
    ]
  }
}

source_set("pdfium_base") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    ":pdfium_third_party_config",
  ]
  sources = [
    "base/allocator/partition_allocator/address_space_randomization.cc",
    "base/allocator/partition_allocator/address_space_randomization.h",
    "base/allocator/partition_allocator/oom.h",
    "base/allocator/partition_allocator/page_allocator.cc",
    "base/allocator/partition_allocator/page_allocator.h",
    "base/allocator/partition_allocator/partition_alloc.cc",
    "base/allocator/partition_allocator/partition_alloc.h",
    "base/allocator/partition_allocator/spin_lock.cc",
    "base/allocator/partition_allocator/spin_lock.h",
    "base/base_export.h",
    "base/bits.h",
    "base/compiler_specific.h",
    "base/logging.h",
    "base/macros.h",
    "base/numerics/safe_conversions.h",
    "base/numerics/safe_conversions_impl.h",
    "base/numerics/safe_math.h",
    "base/numerics/safe_math_impl.h",
    "base/ptr_util.h",
    "base/stl_util.h",
    "base/sys_byteorder.h",
    "base/template_util.h",
    "build/build_config.h",
  ]
}
