# 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_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_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_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 = "../"
}
