# 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")

jumbo_source_set("parser") {
  sources = [
    "cfdf_document.cpp",
    "cfdf_document.h",
    "cpdf_array.cpp",
    "cpdf_array.h",
    "cpdf_boolean.cpp",
    "cpdf_boolean.h",
    "cpdf_cross_ref_avail.cpp",
    "cpdf_cross_ref_avail.h",
    "cpdf_cross_ref_table.cpp",
    "cpdf_cross_ref_table.h",
    "cpdf_crypto_handler.cpp",
    "cpdf_crypto_handler.h",
    "cpdf_data_avail.cpp",
    "cpdf_data_avail.h",
    "cpdf_dictionary.cpp",
    "cpdf_dictionary.h",
    "cpdf_document.cpp",
    "cpdf_document.h",
    "cpdf_encryptor.cpp",
    "cpdf_encryptor.h",
    "cpdf_flateencoder.cpp",
    "cpdf_flateencoder.h",
    "cpdf_hint_tables.cpp",
    "cpdf_hint_tables.h",
    "cpdf_indirect_object_holder.cpp",
    "cpdf_indirect_object_holder.h",
    "cpdf_linearized_header.cpp",
    "cpdf_linearized_header.h",
    "cpdf_name.cpp",
    "cpdf_name.h",
    "cpdf_null.cpp",
    "cpdf_null.h",
    "cpdf_number.cpp",
    "cpdf_number.h",
    "cpdf_object.cpp",
    "cpdf_object.h",
    "cpdf_object_avail.cpp",
    "cpdf_object_avail.h",
    "cpdf_object_stream.cpp",
    "cpdf_object_stream.h",
    "cpdf_object_walker.cpp",
    "cpdf_object_walker.h",
    "cpdf_page_object_avail.cpp",
    "cpdf_page_object_avail.h",
    "cpdf_parser.cpp",
    "cpdf_parser.h",
    "cpdf_read_validator.cpp",
    "cpdf_read_validator.h",
    "cpdf_reference.cpp",
    "cpdf_reference.h",
    "cpdf_security_handler.cpp",
    "cpdf_security_handler.h",
    "cpdf_simple_parser.cpp",
    "cpdf_simple_parser.h",
    "cpdf_stream.cpp",
    "cpdf_stream.h",
    "cpdf_stream_acc.cpp",
    "cpdf_stream_acc.h",
    "cpdf_string.cpp",
    "cpdf_string.h",
    "cpdf_syntax_parser.cpp",
    "cpdf_syntax_parser.h",
    "fpdf_parser_decode.cpp",
    "fpdf_parser_decode.h",
    "fpdf_parser_utility.cpp",
    "fpdf_parser_utility.h",
  ]
  configs += [ "../../../:pdfium_core_config" ]
  deps = [
    "../../../constants",
    "../../fdrm",
    "../../fxcodec",
    "../../fxcrt",
    "../../fxge",
  ]
  allow_circular_includes_from = [
    "../../fxge",
    "../../fxcodec",
  ]
  visibility = [ "../../../*" ]
}

pdfium_unittest_source_set("unittests") {
  sources = [
    "cpdf_array_unittest.cpp",
    "cpdf_cross_ref_avail_unittest.cpp",
    "cpdf_document_unittest.cpp",
    "cpdf_hint_tables_unittest.cpp",
    "cpdf_indirect_object_holder_unittest.cpp",
    "cpdf_object_avail_unittest.cpp",
    "cpdf_object_unittest.cpp",
    "cpdf_object_walker_unittest.cpp",
    "cpdf_page_object_avail_unittest.cpp",
    "cpdf_parser_unittest.cpp",
    "cpdf_read_validator_unittest.cpp",
    "cpdf_simple_parser_unittest.cpp",
    "cpdf_stream_acc_unittest.cpp",
    "cpdf_syntax_parser_unittest.cpp",
    "fpdf_parser_decode_unittest.cpp",
    "fpdf_parser_utility_unittest.cpp",
  ]
  deps = [
    ":parser",
    "../",
    "../../../constants",
  ]
  pdfium_root_dir = "../../../"

  if (is_clang) {
    # Suppress no override warning for overridden functions.
    cflags = [ "-Wno-inconsistent-missing-override" ]
  }
}

pdfium_embeddertest_source_set("embeddertests") {
  sources = [
    "cpdf_parser_embeddertest.cpp",
    "cpdf_security_handler_embeddertest.cpp",
    "fpdf_parser_decode_embeddertest.cpp",
  ]
  deps = [
    ":parser",
  ]
  pdfium_root_dir = "../../../"
}
