# 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("fxbarcode") {
  sources = [
    "BC_Library.cpp",
    "BC_Library.h",
    "BC_TwoDimWriter.cpp",
    "BC_TwoDimWriter.h",
    "BC_Writer.cpp",
    "BC_Writer.h",
    "cbc_codabar.cpp",
    "cbc_codabar.h",
    "cbc_code128.cpp",
    "cbc_code128.h",
    "cbc_code39.cpp",
    "cbc_code39.h",
    "cbc_codebase.cpp",
    "cbc_codebase.h",
    "cbc_datamatrix.cpp",
    "cbc_datamatrix.h",
    "cbc_ean13.cpp",
    "cbc_ean13.h",
    "cbc_ean8.cpp",
    "cbc_ean8.h",
    "cbc_eancode.cpp",
    "cbc_eancode.h",
    "cbc_onecode.cpp",
    "cbc_onecode.h",
    "cbc_pdf417i.cpp",
    "cbc_pdf417i.h",
    "cbc_qrcode.cpp",
    "cbc_qrcode.h",
    "cbc_upca.cpp",
    "cbc_upca.h",
    "common/BC_CommonBitMatrix.cpp",
    "common/BC_CommonBitMatrix.h",
    "common/BC_CommonByteMatrix.cpp",
    "common/BC_CommonByteMatrix.h",
    "common/reedsolomon/BC_ReedSolomon.cpp",
    "common/reedsolomon/BC_ReedSolomon.h",
    "common/reedsolomon/BC_ReedSolomonGF256.cpp",
    "common/reedsolomon/BC_ReedSolomonGF256.h",
    "common/reedsolomon/BC_ReedSolomonGF256Poly.cpp",
    "common/reedsolomon/BC_ReedSolomonGF256Poly.h",
    "datamatrix/BC_ASCIIEncoder.cpp",
    "datamatrix/BC_ASCIIEncoder.h",
    "datamatrix/BC_Base256Encoder.cpp",
    "datamatrix/BC_Base256Encoder.h",
    "datamatrix/BC_C40Encoder.cpp",
    "datamatrix/BC_C40Encoder.h",
    "datamatrix/BC_DataMatrixSymbolInfo144.cpp",
    "datamatrix/BC_DataMatrixSymbolInfo144.h",
    "datamatrix/BC_DataMatrixWriter.cpp",
    "datamatrix/BC_DataMatrixWriter.h",
    "datamatrix/BC_DefaultPlacement.cpp",
    "datamatrix/BC_DefaultPlacement.h",
    "datamatrix/BC_EdifactEncoder.cpp",
    "datamatrix/BC_EdifactEncoder.h",
    "datamatrix/BC_Encoder.cpp",
    "datamatrix/BC_Encoder.h",
    "datamatrix/BC_EncoderContext.cpp",
    "datamatrix/BC_EncoderContext.h",
    "datamatrix/BC_ErrorCorrection.cpp",
    "datamatrix/BC_ErrorCorrection.h",
    "datamatrix/BC_HighLevelEncoder.cpp",
    "datamatrix/BC_HighLevelEncoder.h",
    "datamatrix/BC_SymbolInfo.cpp",
    "datamatrix/BC_SymbolInfo.h",
    "datamatrix/BC_TextEncoder.cpp",
    "datamatrix/BC_TextEncoder.h",
    "datamatrix/BC_X12Encoder.cpp",
    "datamatrix/BC_X12Encoder.h",
    "oned/BC_OneDimWriter.cpp",
    "oned/BC_OneDimWriter.h",
    "oned/BC_OnedCodaBarWriter.cpp",
    "oned/BC_OnedCodaBarWriter.h",
    "oned/BC_OnedCode128Writer.cpp",
    "oned/BC_OnedCode128Writer.h",
    "oned/BC_OnedCode39Writer.cpp",
    "oned/BC_OnedCode39Writer.h",
    "oned/BC_OnedEAN13Writer.cpp",
    "oned/BC_OnedEAN13Writer.h",
    "oned/BC_OnedEAN8Writer.cpp",
    "oned/BC_OnedEAN8Writer.h",
    "oned/BC_OnedEANChecksum.cpp",
    "oned/BC_OnedEANChecksum.h",
    "oned/BC_OnedEANWriter.cpp",
    "oned/BC_OnedEANWriter.h",
    "oned/BC_OnedUPCAWriter.cpp",
    "oned/BC_OnedUPCAWriter.h",
    "pdf417/BC_PDF417.cpp",
    "pdf417/BC_PDF417.h",
    "pdf417/BC_PDF417BarcodeMatrix.cpp",
    "pdf417/BC_PDF417BarcodeMatrix.h",
    "pdf417/BC_PDF417BarcodeRow.cpp",
    "pdf417/BC_PDF417BarcodeRow.h",
    "pdf417/BC_PDF417ErrorCorrection.cpp",
    "pdf417/BC_PDF417ErrorCorrection.h",
    "pdf417/BC_PDF417HighLevelEncoder.cpp",
    "pdf417/BC_PDF417HighLevelEncoder.h",
    "pdf417/BC_PDF417Writer.cpp",
    "pdf417/BC_PDF417Writer.h",
    "qrcode/BC_QRCodeWriter.cpp",
    "qrcode/BC_QRCodeWriter.h",
    "qrcode/BC_QRCoder.cpp",
    "qrcode/BC_QRCoder.h",
    "qrcode/BC_QRCoderBitVector.cpp",
    "qrcode/BC_QRCoderBitVector.h",
    "qrcode/BC_QRCoderECBlocks.cpp",
    "qrcode/BC_QRCoderECBlocks.h",
    "qrcode/BC_QRCoderECBlocksData.cpp",
    "qrcode/BC_QRCoderECBlocksData.h",
    "qrcode/BC_QRCoderEncoder.cpp",
    "qrcode/BC_QRCoderEncoder.h",
    "qrcode/BC_QRCoderErrorCorrectionLevel.cpp",
    "qrcode/BC_QRCoderErrorCorrectionLevel.h",
    "qrcode/BC_QRCoderMaskUtil.cpp",
    "qrcode/BC_QRCoderMaskUtil.h",
    "qrcode/BC_QRCoderMatrixUtil.cpp",
    "qrcode/BC_QRCoderMatrixUtil.h",
    "qrcode/BC_QRCoderMode.cpp",
    "qrcode/BC_QRCoderMode.h",
    "qrcode/BC_QRCoderVersion.cpp",
    "qrcode/BC_QRCoderVersion.h",
    "utils.h",
  ]
  deps = [
    "../core/fxcrt",
    "../core/fxge",
    "../third_party:bigint",
  ]
  configs += [ "../:pdfium_core_config" ]
  visibility = [ "../*" ]
}

pdfium_unittest_source_set("unittests") {
  sources = [
    "cbc_pdf417i_unittest.cpp",
    "datamatrix/BC_DataMatrixWriter_unittest.cpp",
    "oned/BC_OnedCodaBarWriter_unittest.cpp",
    "oned/BC_OnedCode128Writer_unittest.cpp",
    "oned/BC_OnedCode39Writer_unittest.cpp",
    "oned/BC_OnedEAN13Writer_unittest.cpp",
    "oned/BC_OnedEAN8Writer_unittest.cpp",
    "oned/BC_OnedUPCAWriter_unittest.cpp",
    "pdf417/BC_PDF417HighLevelEncoder_unittest.cpp",
    "pdf417/BC_PDF417Writer_unittest.cpp",
    "qrcode/BC_QRCodeWriter_unittest.cpp",
  ]
  deps = [
    ":fxbarcode",
  ]
  pdfium_root_dir = "../"
}
