# 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")

assert(pdf_enable_xfa)

jumbo_source_set("fgas") {
  sources = [
    "crt/cfgas_decimal.cpp",
    "crt/cfgas_decimal.h",
    "crt/cfgas_stringformatter.cpp",
    "crt/cfgas_stringformatter.h",
    "crt/locale_iface.h",
    "crt/locale_mgr_iface.h",
    "font/cfgas_defaultfontmanager.cpp",
    "font/cfgas_defaultfontmanager.h",
    "font/cfgas_fontmgr.cpp",
    "font/cfgas_fontmgr.h",
    "font/cfgas_gefont.cpp",
    "font/cfgas_gefont.h",
    "font/cfgas_pdffontmgr.cpp",
    "font/cfgas_pdffontmgr.h",
    "font/fgas_fontutils.cpp",
    "font/fgas_fontutils.h",
  ]
  deps = [
    "../../core/fpdfapi/font",
    "../../core/fpdfapi/parser",
    "../../core/fxcrt",
    "../../core/fxge",
  ]
  configs += [
    "../../:pdfium_core_config",
    "../:xfa_warnings",
  ]
  visibility = [ "../../*" ]

  if (!is_win) {
    sources += [
      "font/cfx_fontsourceenum_file.cpp",
      "font/cfx_fontsourceenum_file.h",
    ]
  }
}

pdfium_unittest_source_set("unittests") {
  sources = [
    "crt/cfgas_decimal_unittest.cpp",
    "crt/cfgas_stringformatter_unittest.cpp",
  ]
  deps = [
    ":fgas",
    "../../core/fpdfapi",
    "../fxfa/parser",
  ]
  pdfium_root_dir = "../../"
}
