# 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("crt") {
  sources = [
    "cfgas_decimal.cpp",
    "cfgas_decimal.h",
    "cfgas_stringformatter.cpp",
    "cfgas_stringformatter.h",
    "locale_iface.h",
    "locale_mgr_iface.h",
  ]
  deps = [
    "../../../core/fpdfapi/page",
    "../../../core/fxcrt",
  ]
  configs += [
    "../../../:pdfium_core_config",
    "../../:xfa_warnings",
  ]
  visibility = [ "../../../*" ]
}

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