# 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("layout") {
  sources = [
    "cfgas_char.cpp",
    "cfgas_char.h",
    "cfx_break.cpp",
    "cfx_break.h",
    "cfx_breakline.cpp",
    "cfx_breakline.h",
    "cfx_breakpiece.cpp",
    "cfx_breakpiece.h",
    "cfx_linkuserdata.cpp",
    "cfx_linkuserdata.h",
    "cfx_rtfbreak.cpp",
    "cfx_rtfbreak.h",
    "cfx_textpiece.cpp",
    "cfx_textpiece.h",
    "cfx_textuserdata.cpp",
    "cfx_textuserdata.h",
    "cfx_txtbreak.cpp",
    "cfx_txtbreak.h",
    "fx_arabic.cpp",
    "fx_arabic.h",
    "fx_linebreak.cpp",
    "fx_linebreak.h",
  ]
  deps = [
    "../../../core/fxcrt",
    "../../../core/fxcrt/css",
    "../../../core/fxge",
    "../font",
  ]
  configs += [
    "../../../:pdfium_core_config",
    "../../:xfa_warnings",
  ]
  visibility = [ "../../../*" ]
}

pdfium_unittest_source_set("unittests") {
  sources = [
    "cfx_rtfbreak_unittest.cpp",
    "cfx_txtbreak_unittest.cpp",
  ]
  deps = [
    ":layout",
    "../../../core/fxge",
    "../font",
  ]
  pdfium_root_dir = "../../../"
}
