# 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("fm2js") {
  sources = [
    "cxfa_fmexpression.cpp",
    "cxfa_fmexpression.h",
    "cxfa_fmlexer.cpp",
    "cxfa_fmlexer.h",
    "cxfa_fmparser.cpp",
    "cxfa_fmparser.h",
    "cxfa_fmsimpleexpression.cpp",
    "cxfa_fmsimpleexpression.h",
    "cxfa_fmtojavascriptdepth.cpp",
    "cxfa_fmtojavascriptdepth.h",
  ]
  deps = [
    "../../../core/fxcrt",
    "//third_party/icu:icuuc",
  ]
  configs += [
    "../../../:pdfium_core_config",
    "../../:xfa_warnings",
  ]
  visibility = [ "../../../*" ]
}

pdfium_unittest_source_set("unittests") {
  sources = [
    "cxfa_fmexpression_unittest.cpp",
    "cxfa_fmlexer_unittest.cpp",
    "cxfa_fmparser_unittest.cpp",
    "cxfa_fmsimpleexpression_unittest.cpp",
  ]
  deps = [
    ":fm2js",
  ]
  pdfium_root_dir = "../../../"
}
