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

if (pdf_enable_xfa) {
  group("pdf_bidi_fuzzer") {
    deps = [
      "../fuzzers/:pdf_bidi_fuzzer_src",
    ]
    testonly = true
  }

  group("pdf_cfx_barcode_fuzzer") {
    deps = [
      "../fuzzers/:pdf_cfx_barcode_fuzzer_src",
    ]
    testonly = true
  }

  if (pdf_enable_xfa_bmp) {
    group("pdf_codec_bmp_fuzzer") {
      deps = [
        "../fuzzers/:pdf_codec_bmp_fuzzer_src",
      ]
      testonly = true
    }
  }

  if (pdf_enable_xfa_gif) {
    group("pdf_codec_gif_fuzzer") {
      deps = [
        "../fuzzers/:pdf_codec_gif_fuzzer_src",
      ]
      testonly = true
    }

    group("pdf_lzw_fuzzer") {
      deps = [
        "../fuzzers/:pdf_lzw_fuzzer_src",
      ]
      testonly = true
    }
  }

  group("pdf_codec_jpeg_fuzzer") {
    deps = [
      "../fuzzers/:pdf_codec_jpeg_fuzzer_src",
    ]
    testonly = true
  }

  if (pdf_enable_xfa_png) {
    group("pdf_codec_png_fuzzer") {
      deps = [
        "../fuzzers/:pdf_codec_png_fuzzer_src",
      ]
      testonly = true
    }
  }

  if (pdf_enable_xfa_tiff) {
    group("pdf_codec_tiff_fuzzer") {
      deps = [
        "../fuzzers/:pdf_codec_tiff_fuzzer_src",
      ]
      testonly = true
    }
  }

  group("pdf_css_fuzzer") {
    deps = [
      "../fuzzers/:pdf_css_fuzzer_src",
    ]
    testonly = true
  }

  group("pdf_fm2js_fuzzer") {
    deps = [
      "../fuzzers/:pdf_fm2js_fuzzer_src",
    ]
    testonly = true
  }

  group("pdf_formcalc_fuzzer") {
    deps = [
      "../fuzzers/:pdf_formcalc_fuzzer_src",
    ]
    testonly = true
  }
}

group("pdf_cmap_fuzzer") {
  deps = [
    "../fuzzers/:pdf_cmap_fuzzer_src",
  ]
  testonly = true
}

group("pdf_codec_a85_fuzzer") {
  deps = [
    "../fuzzers/:pdf_codec_a85_fuzzer_src",
  ]
  testonly = true
}

group("pdf_codec_fax_fuzzer") {
  deps = [
    "../fuzzers/:pdf_codec_fax_fuzzer_src",
  ]
  testonly = true
}

group("pdf_codec_icc_fuzzer") {
  deps = [
    "../fuzzers/:pdf_codec_icc_fuzzer_src",
  ]
  testonly = true
}

group("pdf_codec_jbig2_fuzzer") {
  deps = [
    "../fuzzers/:pdf_codec_jbig2_fuzzer_src",
  ]
  testonly = true
}

group("pdf_codec_rle_fuzzer") {
  deps = [
    "../fuzzers/:pdf_codec_rle_fuzzer_src",
  ]
  testonly = true
}

group("pdf_font_fuzzer") {
  deps = [
    "../fuzzers/:pdf_font_fuzzer_src",
  ]
  testonly = true
}

group("pdf_hint_table_fuzzer") {
  deps = [
    "../fuzzers/:pdf_hint_table_fuzzer_src",
  ]
  testonly = true
}

group("pdf_jpx_fuzzer") {
  deps = [
    "../fuzzers/:pdf_jpx_fuzzer_src",
  ]
  testonly = true
}

group("pdf_psengine_fuzzer") {
  deps = [
    "../fuzzers/:pdf_psengine_fuzzer_src",
  ]
  testonly = true
}

group("pdf_streamparser_fuzzer") {
  deps = [
    "../fuzzers/:pdf_streamparser_fuzzer_src",
  ]
  testonly = true
}

group("pdf_xml_fuzzer") {
  deps = [
    "../fuzzers/:pdf_xml_fuzzer_src",
  ]
  testonly = true
}
