# 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_UtilCodingConvert.cpp",
    "BC_UtilCodingConvert.h",
    "BC_Utils.cpp",
    "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_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_CommonBitArray.cpp",
    "common/BC_CommonBitArray.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_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_PDF417Compaction.cpp",
    "pdf417/BC_PDF417Compaction.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 = [
    "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",
  ]
  deps = [
    ":fxbarcode",
  ]
  pdfium_root_dir = "../"
}
