# 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("fpdfsdk") {
  sources = [
    "cfx_systemhandler.cpp",
    "cfx_systemhandler.h",
    "cpdf_annotcontext.cpp",
    "cpdf_annotcontext.h",
    "cpdfsdk_actionhandler.cpp",
    "cpdfsdk_actionhandler.h",
    "cpdfsdk_annot.cpp",
    "cpdfsdk_annot.h",
    "cpdfsdk_annothandlermgr.cpp",
    "cpdfsdk_annothandlermgr.h",
    "cpdfsdk_annotiteration.cpp",
    "cpdfsdk_annotiteration.h",
    "cpdfsdk_annotiterator.cpp",
    "cpdfsdk_annotiterator.h",
    "cpdfsdk_baannot.cpp",
    "cpdfsdk_baannot.h",
    "cpdfsdk_baannothandler.cpp",
    "cpdfsdk_baannothandler.h",
    "cpdfsdk_customaccess.cpp",
    "cpdfsdk_customaccess.h",
    "cpdfsdk_fieldaction.cpp",
    "cpdfsdk_fieldaction.h",
    "cpdfsdk_filewriteadapter.cpp",
    "cpdfsdk_filewriteadapter.h",
    "cpdfsdk_formfillenvironment.cpp",
    "cpdfsdk_formfillenvironment.h",
    "cpdfsdk_helpers.cpp",
    "cpdfsdk_helpers.h",
    "cpdfsdk_interactiveform.cpp",
    "cpdfsdk_interactiveform.h",
    "cpdfsdk_pageview.cpp",
    "cpdfsdk_pageview.h",
    "cpdfsdk_widget.cpp",
    "cpdfsdk_widget.h",
    "cpdfsdk_widgethandler.cpp",
    "cpdfsdk_widgethandler.h",
    "fpdf_annot.cpp",
    "fpdf_attachment.cpp",
    "fpdf_catalog.cpp",
    "fpdf_dataavail.cpp",
    "fpdf_doc.cpp",
    "fpdf_editimg.cpp",
    "fpdf_editpage.cpp",
    "fpdf_editpath.cpp",
    "fpdf_edittext.cpp",
    "fpdf_ext.cpp",
    "fpdf_flatten.cpp",
    "fpdf_formfill.cpp",
    "fpdf_ppo.cpp",
    "fpdf_progressive.cpp",
    "fpdf_save.cpp",
    "fpdf_searchex.cpp",
    "fpdf_structtree.cpp",
    "fpdf_sysfontinfo.cpp",
    "fpdf_text.cpp",
    "fpdf_transformpage.cpp",
    "fpdf_view.cpp",
    "ipdfsdk_annothandler.h",
    "ipdfsdk_pauseadapter.cpp",
    "ipdfsdk_pauseadapter.h",
  ]

  configs += [ "../:pdfium_core_config" ]
  deps = [
    "../:pdfium_public_headers",
    "../constants",
    "../core/fdrm",
    "../core/fpdfapi",
    "../core/fpdfapi/edit",
    "../core/fpdfapi/font",
    "../core/fpdfapi/page",
    "../core/fpdfapi/parser",
    "../core/fpdfapi/render",
    "../core/fpdfdoc",
    "../core/fpdftext",
    "../core/fxcodec",
    "../core/fxcrt",
    "../core/fxge",
    "../fxjs",
    "formfiller",
    "pwl",
  ]
  allow_circular_includes_from = [
    "../fxjs",
    "formfiller",
    "pwl",
  ]
  visibility = [ "../*" ]

  if (pdf_enable_xfa) {
    sources += [
      "cpdfsdk_xfawidget.cpp",
      "cpdfsdk_xfawidget.h",
      "cpdfsdk_xfawidgethandler.cpp",
      "cpdfsdk_xfawidgethandler.h",
    ]

    deps += [
      "../fxbarcode",
      "../xfa/fwl",
      "../xfa/fxfa",
      "../xfa/fxfa/parser",
      "../xfa/fxgraphics",
      "fpdfxfa",
    ]
    allow_circular_includes_from += [ "fpdfxfa" ]
  }
}

pdfium_unittest_source_set("unittests") {
  sources = [
    "fpdf_catalog_unittest.cpp",
    "fpdf_doc_unittest.cpp",
    "fpdf_edit_unittest.cpp",
    "fpdf_editimg_unittest.cpp",
  ]
  deps = [
    ":fpdfsdk",
    "../:pdfium_public_headers",
    "../core/fpdfapi",
    "../core/fpdfapi/page",
    "../core/fpdfapi/parser",
    "../core/fpdfapi/render",
    "../core/fpdfdoc",
  ]
  pdfium_root_dir = "../"
}

pdfium_embeddertest_source_set("embeddertests") {
  sources = [
    "cpdfsdk_annotiterator_embeddertest.cpp",
    "fpdf_annot_embeddertest.cpp",
    "fpdf_attachment_embeddertest.cpp",
    "fpdf_dataavail_embeddertest.cpp",
    "fpdf_doc_embeddertest.cpp",
    "fpdf_edit_embeddertest.cpp",
    "fpdf_editpage_embeddertest.cpp",
    "fpdf_editpath_embeddertest.cpp",
    "fpdf_ext_embeddertest.cpp",
    "fpdf_flatten_embeddertest.cpp",
    "fpdf_formfill_embeddertest.cpp",
    "fpdf_ppo_embeddertest.cpp",
    "fpdf_save_embeddertest.cpp",
    "fpdf_searchex_embeddertest.cpp",
    "fpdf_structtree_embeddertest.cpp",
    "fpdf_sysfontinfo_embeddertest.cpp",
    "fpdf_text_embeddertest.cpp",
    "fpdf_transformpage_embeddertest.cpp",
    "fpdf_view_c_api_test.c",
    "fpdf_view_c_api_test.h",
    "fpdf_view_embeddertest.cpp",
  ]
  deps = [
    ":fpdfsdk",
    "../constants",
    "../core/fpdfapi/font",
    "../core/fpdfapi/page",
    "../core/fpdfapi/parser",
    "../core/fxge",
  ]
  pdfium_root_dir = "../"
}
