# Copyright 2014 The Chromium 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("//testing/libfuzzer/fuzzer_test.gni")

config("jsoncpp_config") {
  include_dirs = [
    "overrides/include",
    "source/include",
  ]
}

source_set("jsoncpp") {
  sources = [
    "overrides/include/json/value.h",
    "overrides/src/lib_json/json_reader.cpp",
    "overrides/src/lib_json/json_value.cpp",
    "source/include/json/assertions.h",
    "source/include/json/autolink.h",
    "source/include/json/config.h",
    "source/include/json/features.h",
    "source/include/json/forwards.h",
    "source/include/json/json.h",
    "source/include/json/reader.h",
    "source/include/json/writer.h",
    "source/src/lib_json/json_batchallocator.h",
    "source/src/lib_json/json_tool.h",
    "source/src/lib_json/json_writer.cpp",
  ]

  public_configs = [ ":jsoncpp_config" ]

  defines = [ "JSON_USE_EXCEPTION=0" ]

  include_dirs = [ "source/src/lib_json" ]
}

fuzzer_test("jsoncpp_fuzzer") {
  sources = [
    "fuzzers/json_fuzzer.cc",
  ]
  deps = [
    ":jsoncpp",
  ]
  dict = "//testing/libfuzzer/fuzzers/dicts/json.dict"
}
