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

assert(pdf_enable_xfa)

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/page",
    "../../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/page",
    "../fxfa/parser",
  ]
  pdfium_root_dir = "../../"
}
