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

config("fuzzer_config") {
  configs = [ "../..:pdfium_core_config" ]

  defines = [
    "PNG_PREFIX",
    "PNG_USE_READ_MACROS",
  ]
  include_dirs = [ "../.." ]
}

# All possible "pdfium_fuzzer"s.
fuzzer_list = [
  "pdf_cmap_fuzzer",
  "pdf_codec_a85_fuzzer",
  "pdf_codec_fax_fuzzer",
  "pdf_codec_icc_fuzzer",
  "pdf_codec_jbig2_fuzzer",
  "pdf_codec_rle_fuzzer",
  "pdf_font_fuzzer",
  "pdf_hint_table_fuzzer",
  "pdf_jpx_fuzzer",
  "pdf_psengine_fuzzer",
  "pdf_streamparser_fuzzer",
  "pdf_xml_fuzzer",
  "pdfium_fuzzer",
]
if (pdf_enable_v8) {
  fuzzer_list += [
    "pdf_cjs_util_fuzzer",
    "pdf_fx_date_helpers_fuzzer",
  ]
  if (pdf_enable_xfa) {
    fuzzer_list += [
      "pdf_bidi_fuzzer",
      "pdf_cfgas_stringformatter_fuzzer",
      "pdf_cfx_barcode_fuzzer",
      "pdf_codec_jpeg_fuzzer",
      "pdf_css_fuzzer",
      "pdf_fm2js_fuzzer",
      "pdf_formcalc_context_fuzzer",
      "pdf_formcalc_fuzzer",
      "pdfium_xfa_fuzzer",
    ]
    if (pdf_enable_xfa_bmp) {
      fuzzer_list += [ "pdf_codec_bmp_fuzzer" ]
    }
    if (pdf_enable_xfa_gif) {
      fuzzer_list += [
        "pdf_codec_gif_fuzzer",
        "pdf_lzw_fuzzer",
      ]
    }
    if (pdf_enable_xfa_png) {
      fuzzer_list += [ "pdf_codec_png_fuzzer" ]
    }
    if (pdf_enable_xfa_tiff) {
      fuzzer_list += [ "pdf_codec_tiff_fuzzer" ]
    }
  }
}

group("fuzzers") {
  testonly = true
  deps = []
  foreach(fuzzer, fuzzer_list) {
    deps += [ ":${fuzzer}_src" ]
  }
}

jumbo_source_set("fuzzer_init") {
  testonly = true
  sources = [
    "pdf_fuzzer_init.cc",
  ]
  include_dirs = [ "../.." ]
  deps = [
    "../../:pdfium_public_headers",
  ]
}

jumbo_source_set("fuzzer_init_public") {
  testonly = true
  sources = [
    "pdf_fuzzer_init_public.cc",
  ]
  include_dirs = [ "../.." ]
  deps = [
    "../../:pdfium_public_headers",
  ]
  if (pdf_enable_v8) {
    configs += [ "//v8:external_startup_data" ]
    deps += [
      "../:test_support",
      "//v8",
      "//v8:v8_libplatform",
    ]
  }
}

if (is_component_build) {
  group("fuzzer_impls") {
    deps = []
    foreach(fuzzer, fuzzer_list) {
      deps += [ ":${fuzzer}_impl" ]
    }
  }
}

jumbo_source_set("fuzzer_helper") {
  testonly = !is_component_build
  sources = [
    "pdfium_fuzzer_helper.cc",
    "pdfium_fuzzer_helper.h",
  ]
  configs += [ ":fuzzer_config" ]
  deps = [
    "../../:pdfium_public_headers",
    "../../third_party:pdfium_base",
  ]
}

jumbo_source_set("fuzzer_utils") {
  # In component builds, the pdfium target (which is not testonly) depends on
  # the fuzzer sources, which may depend on this target, so add testonly only in
  # non-component builds.
  testonly = !is_component_build
  sources = [
    "pdfium_fuzzer_util.cc",
    "pdfium_fuzzer_util.h",
  ]
  deps = [
    "../../:pdfium_public_headers",
  ]
  include_dirs = [ "../.." ]
}

template("pdfium_fuzzer") {
  if (defined(invoker.public_fuzzer) && invoker.public_fuzzer) {
    init_dep = ":fuzzer_init_public"
  } else {
    init_dep = ":fuzzer_init"
  }
  if (is_component_build) {
    # In component builds, fuzzers are split into "_impl" and "_src" targets.
    # The "_impl" target exports the fuzzer implementation and gets statically
    # linked into the PDFium shared library.  The "_src" target is a thin
    # wrapper that imports the fuzzer from PDFium; this gets linked into the
    # real fuzzer executable.  In static builds, there's only a single "_src"
    # target that contains the implementation and statically links in PDFium.

    impl_name = target_name + "_impl"
    template_target_name = target_name
    jumbo_source_set("${target_name}_src") {
      testonly = true
      sources = [
        "component_fuzzer_template.cc",
      ]
      deps = [
        "../../:pdfium",
        init_dep,
      ]
      configs += [ ":fuzzer_config" ]
      defines = [ "FUZZER_IMPL=${template_target_name}" ]
    }
  } else {
    impl_name = target_name + "_src"
  }
  jumbo_source_set(impl_name) {
    sources = invoker.sources
    deps = []
    if (defined(invoker.deps)) {
      deps += invoker.deps
    }
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [
      "//build/config/compiler:no_chromium_code",
      ":fuzzer_config",
    ]
    if (is_component_build) {
      # |export| should be consistent with FPDF_EXPORT In public/fpdfview.h.
      if (is_win) {
        export = "__declspec(dllexport)"
      } else {
        export = "__attribute__((visibility(\"default\")))"
      }
      defines = [ "LLVMFuzzerTestOneInput=${export} ${template_target_name}" ]
      deps += [ "../../:pdfium_public_headers" ]
    } else {
      testonly = true
      deps += [
        "../../:pdfium",
        init_dep,
      ]
    }
  }
}

if (pdf_enable_v8) {
  pdfium_fuzzer("pdf_cjs_util_fuzzer") {
    sources = [
      "pdf_cjs_util_fuzzer.cc",
    ]
    deps = [
      "../../core/fxcrt",
      "../../fxjs",
    ]
  }
  pdfium_fuzzer("pdf_fx_date_helpers_fuzzer") {
    sources = [
      "pdf_fx_date_helpers_fuzzer.cc",
    ]
    deps = [
      "../../core/fxcrt",
      "../../fxjs",
    ]
  }

  if (pdf_enable_xfa) {
    pdfium_fuzzer("pdf_bidi_fuzzer") {
      sources = [
        "pdf_bidi_fuzzer.cc",
      ]
      deps = [
        "../../:freetype_common",
        "../../core/fxcrt",
        "../../core/fxge",
        "../../xfa/fgas",
        "../../xfa/fgas/layout",
        "//third_party/icu:icuuc",
      ]
    }

    pdfium_fuzzer("pdf_cfgas_stringformatter_fuzzer") {
      sources = [
        "pdf_cfgas_stringformatter_fuzzer.cc",
      ]
      deps = [
        "../../core/fxcrt",
        "../../xfa/fgas",
        "../../xfa/fxfa/parser",
      ]
    }

    pdfium_fuzzer("pdf_cfx_barcode_fuzzer") {
      sources = [
        "pdf_cfx_barcode_fuzzer.cc",
      ]
      deps = [
        "../../core/fxcrt",
        "../../xfa/fwl",
        "//third_party/icu:icuuc",
      ]
    }

    if (pdf_enable_xfa_bmp) {
      pdfium_fuzzer("pdf_codec_bmp_fuzzer") {
        sources = [
          "pdf_codec_bmp_fuzzer.cc",
          "xfa_codec_fuzzer.h",
        ]
        deps = [
          "../../core/fxcodec",
          "../../core/fxcrt",
          "../../core/fxge",
          "../../third_party:pdfium_base",
        ]
      }
    }

    if (pdf_enable_xfa_gif) {
      pdfium_fuzzer("pdf_codec_gif_fuzzer") {
        sources = [
          "pdf_codec_gif_fuzzer.cc",
          "xfa_codec_fuzzer.h",
        ]
        deps = [
          "../../core/fxcodec",
          "../../core/fxcrt",
          "../../core/fxge",
          "../../third_party:pdfium_base",
        ]
      }

      pdfium_fuzzer("pdf_lzw_fuzzer") {
        sources = [
          "pdf_lzw_fuzzer.cc",
        ]
        deps = [
          "../../core/fxcodec",
          "../../third_party:pdfium_base",
        ]
      }
    }

    pdfium_fuzzer("pdf_codec_jpeg_fuzzer") {
      sources = [
        "pdf_codec_jpeg_fuzzer.cc",
        "xfa_codec_fuzzer.h",
      ]
      deps = [
        "../../core/fxcodec",
        "../../core/fxcrt",
        "../../core/fxge",
        "../../third_party:pdfium_base",
      ]
    }

    if (pdf_enable_xfa_png) {
      pdfium_fuzzer("pdf_codec_png_fuzzer") {
        sources = [
          "pdf_codec_png_fuzzer.cc",
          "xfa_codec_fuzzer.h",
        ]
        deps = [
          "../../core/fxcodec",
          "../../core/fxcrt",
          "../../core/fxge",
          "../../third_party:pdfium_base",
        ]
      }
    }

    if (pdf_enable_xfa_tiff) {
      pdfium_fuzzer("pdf_codec_tiff_fuzzer") {
        sources = [
          "pdf_codec_tiff_fuzzer.cc",
          "xfa_codec_fuzzer.h",
        ]
        deps = [
          "../../core/fxcodec",
          "../../core/fxcrt",
          "../../core/fxge",
          "../../third_party:pdfium_base",
        ]
      }
    }

    pdfium_fuzzer("pdf_css_fuzzer") {
      sources = [
        "pdf_css_fuzzer.cc",
      ]
      deps = [
        "../../core/fxcrt",
        "../../core/fxcrt/css",
      ]
    }

    pdfium_fuzzer("pdf_fm2js_fuzzer") {
      sources = [
        "pdf_fm2js_fuzzer.cc",
      ]
      deps = [
        "../../core/fxcrt",
        "../../fxjs",
      ]
    }

    pdfium_fuzzer("pdf_formcalc_context_fuzzer") {
      sources = [
        "pdf_formcalc_context_fuzzer.cc",
      ]
      deps = [
        ":fuzzer_helper",
        "../../:pdfium_public_headers",
        "../../core/fxcrt",
        "../../fpdfsdk",
        "../../fpdfsdk/fpdfxfa",
        "../../fxjs",
        "../../xfa/fxfa",
      ]
      public_fuzzer = true
    }

    pdfium_fuzzer("pdf_formcalc_fuzzer") {
      sources = [
        "pdf_formcalc_fuzzer.cc",
      ]
      deps = [
        "../../core/fxcrt",
        "../../xfa/fxfa/fm2js",
      ]
    }

    pdfium_fuzzer("pdfium_xfa_fuzzer") {
      sources = [
        "pdfium_xfa_fuzzer.cc",
      ]
      deps = [
        ":fuzzer_helper",
        "../../:pdfium_public_headers",
      ]
      public_fuzzer = true
    }
  }
}

pdfium_fuzzer("pdf_cmap_fuzzer") {
  sources = [
    "pdf_cmap_fuzzer.cc",
  ]
  deps = [
    "../../:freetype_common",
    "../../core/fpdfapi/font",
    "../../third_party:pdfium_base",
  ]
}

pdfium_fuzzer("pdf_codec_a85_fuzzer") {
  sources = [
    "pdf_codec_a85_fuzzer.cc",
  ]
  deps = [
    "../../core/fxcodec",
    "../../core/fxcrt",
  ]
}

pdfium_fuzzer("pdf_codec_fax_fuzzer") {
  sources = [
    "pdf_codec_fax_fuzzer.cc",
  ]
  deps = [
    ":fuzzer_utils",
    "../../core/fxcodec",
  ]
}

pdfium_fuzzer("pdf_codec_icc_fuzzer") {
  sources = [
    "pdf_codec_icc_fuzzer.cc",
  ]
  deps = [
    "../../core/fxcodec",
    "../../third_party:pdfium_base",
    "../../third_party/:lcms2",
  ]
}

pdfium_fuzzer("pdf_codec_jbig2_fuzzer") {
  sources = [
    "pdf_codec_jbig2_fuzzer.cc",
  ]
  deps = [
    ":fuzzer_utils",
    "../../core/fpdfapi/parser",
    "../../core/fxcodec",
    "../../core/fxcrt",
    "../../core/fxge",
  ]
}

pdfium_fuzzer("pdf_codec_rle_fuzzer") {
  sources = [
    "../../core/fxcrt",
    "pdf_codec_rle_fuzzer.cc",
  ]
  deps = [
    "../../core/fxcodec",
    "../../core/fxcrt",
  ]
}

pdfium_fuzzer("pdf_font_fuzzer") {
  sources = [
    "pdf_font_fuzzer.cc",
  ]
  deps = [
    "../../:pdfium_public_headers",
  ]
}

pdfium_fuzzer("pdf_hint_table_fuzzer") {
  sources = [
    "pdf_hint_table_fuzzer.cc",
  ]
  deps = [
    "../../core/fpdfapi/parser",
    "../../core/fxcrt",
    "../../third_party:pdfium_base",
  ]
}

pdfium_fuzzer("pdf_jpx_fuzzer") {
  sources = [
    "pdf_jpx_fuzzer.cc",
  ]
  deps = [
    "../../core/fxcodec",
    "../../core/fxcrt",
    "../../core/fxge",
  ]
}

pdfium_fuzzer("pdf_psengine_fuzzer") {
  sources = [
    "pdf_psengine_fuzzer.cc",
  ]
  deps = [
    "../../core/fpdfapi/page",
    "../../third_party:pdfium_base",
  ]
}

pdfium_fuzzer("pdf_streamparser_fuzzer") {
  sources = [
    "pdf_streamparser_fuzzer.cc",
  ]
  deps = [
    "../../core/fpdfapi/page",
    "../../core/fpdfapi/parser",
    "../../third_party:pdfium_base",
  ]
}

pdfium_fuzzer("pdf_xml_fuzzer") {
  sources = [
    "pdf_xml_fuzzer.cc",
  ]
  deps = [
    "../../core/fxcrt",
    "../../third_party:pdfium_base",
  ]
}

pdfium_fuzzer("pdfium_fuzzer") {
  sources = [
    "pdfium_fuzzer.cc",
  ]
  deps = [
    ":fuzzer_helper",
  ]
  public_fuzzer = true
}
