# Copyright 2018 The 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/jumbo.gni")
import("../../pdfium.gni")
import("../../testing/test.gni")

jumbo_source_set("fxcodec") {
  sources = [
    "JBig2_DocumentContext.cpp",
    "JBig2_DocumentContext.h",
    "codec/basicmodule.cpp",
    "codec/basicmodule.h",
    "codec/cfx_codec_memory.cpp",
    "codec/cfx_codec_memory.h",
    "codec/cjpx_decoder.cpp",
    "codec/cjpx_decoder.h",
    "codec/codec_int.h",
    "codec/codec_module_iface.h",
    "codec/faxmodule.cpp",
    "codec/faxmodule.h",
    "codec/flatemodule.cpp",
    "codec/flatemodule.h",
    "codec/iccmodule.cpp",
    "codec/iccmodule.h",
    "codec/jbig2module.cpp",
    "codec/jbig2module.h",
    "codec/jpegmodule.cpp",
    "codec/jpegmodule.h",
    "codec/jpxmodule.cpp",
    "codec/jpxmodule.h",
    "codec/scanlinedecoder.cpp",
    "codec/scanlinedecoder.h",
    "fx_codec.cpp",
    "fx_codec.h",
    "fx_codec_def.h",
    "jbig2/JBig2_ArithDecoder.cpp",
    "jbig2/JBig2_ArithDecoder.h",
    "jbig2/JBig2_ArithIntDecoder.cpp",
    "jbig2/JBig2_ArithIntDecoder.h",
    "jbig2/JBig2_BitStream.cpp",
    "jbig2/JBig2_BitStream.h",
    "jbig2/JBig2_Context.cpp",
    "jbig2/JBig2_Context.h",
    "jbig2/JBig2_Define.h",
    "jbig2/JBig2_GrdProc.cpp",
    "jbig2/JBig2_GrdProc.h",
    "jbig2/JBig2_GrrdProc.cpp",
    "jbig2/JBig2_GrrdProc.h",
    "jbig2/JBig2_HtrdProc.cpp",
    "jbig2/JBig2_HtrdProc.h",
    "jbig2/JBig2_HuffmanDecoder.cpp",
    "jbig2/JBig2_HuffmanDecoder.h",
    "jbig2/JBig2_HuffmanTable.cpp",
    "jbig2/JBig2_HuffmanTable.h",
    "jbig2/JBig2_Image.cpp",
    "jbig2/JBig2_Image.h",
    "jbig2/JBig2_Page.h",
    "jbig2/JBig2_PatternDict.cpp",
    "jbig2/JBig2_PatternDict.h",
    "jbig2/JBig2_PddProc.cpp",
    "jbig2/JBig2_PddProc.h",
    "jbig2/JBig2_SddProc.cpp",
    "jbig2/JBig2_SddProc.h",
    "jbig2/JBig2_Segment.cpp",
    "jbig2/JBig2_Segment.h",
    "jbig2/JBig2_SymbolDict.cpp",
    "jbig2/JBig2_SymbolDict.h",
    "jbig2/JBig2_TrdProc.cpp",
    "jbig2/JBig2_TrdProc.h",
  ]
  configs += [ "../../:pdfium_core_config" ]
  include_dirs = []
  deps = [
    "../../third_party:lcms2",
    "../../third_party:libopenjpeg2",
    "../../third_party:zlib",
    "../fxcrt",
    "../fxge",
    "//third_party:jpeg",
  ]

  if (pdf_enable_xfa) {
    sources += [
      "codec/progressivedecoder.cpp",
      "codec/progressivedecoder.h",
    ]
    if (pdf_enable_xfa_bmp) {
      sources += [
        "bmp/cfx_bmpcontext.cpp",
        "bmp/cfx_bmpcontext.h",
        "bmp/cfx_bmpdecompressor.cpp",
        "bmp/cfx_bmpdecompressor.h",
        "bmp/fx_bmp.h",
        "codec/bmpmodule.cpp",
        "codec/bmpmodule.h",
      ]
    }
    if (pdf_enable_xfa_gif) {
      sources += [
        "codec/gifmodule.cpp",
        "codec/gifmodule.h",
        "gif/cfx_gif.cpp",
        "gif/cfx_gif.h",
        "gif/cfx_gifcontext.cpp",
        "gif/cfx_gifcontext.h",
        "gif/cfx_lzwdecompressor.cpp",
        "gif/cfx_lzwdecompressor.h",
      ]
    }
    if (pdf_enable_xfa_png) {
      sources += [
        "codec/pngmodule.cpp",
        "codec/pngmodule.h",
      ]
      deps += [ "../../third_party:png" ]
    }
    if (pdf_enable_xfa_tiff) {
      sources += [
        "codec/tiffmodule.cpp",
        "codec/tiffmodule.h",
      ]
      deps += [ "../../third_party:fx_tiff" ]
    }
  }

  visibility = [ "../../*" ]
}

pdfium_unittest_source_set("unittests") {
  sources = [
    "codec/fx_codec_a85_unittest.cpp",
    "codec/fx_codec_jpx_unittest.cpp",
    "codec/fx_codec_rle_unittest.cpp",
    "jbig2/JBig2_BitStream_unittest.cpp",
    "jbig2/JBig2_Image_unittest.cpp",
  ]
  deps = [
    ":fxcodec",
    "../fpdfapi/parser",
  ]
  pdfium_root_dir = "../../"

  if (pdf_enable_xfa) {
    sources += [ "codec/progressivedecoder_unittest.cpp" ]
    deps += [ "../fxge" ]
    if (pdf_enable_xfa_gif) {
      sources += [
        "gif/cfx_gifcontext_unittest.cpp",
        "gif/cfx_lzwdecompressor_unittest.cpp",
      ]
    }
  }
}

pdfium_embeddertest_source_set("embeddertests") {
  sources = [
    "codec/fx_codec_embeddertest.cpp",
  ]
  pdfium_root_dir = "../../"
}
