| # Copyright 2014 The Chromium Authors | |
| # 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 = [ "source/include" ] | |
| } | |
| source_set("jsoncpp") { | |
| sources = [ | |
| "source/include/json/allocator.h", | |
| "source/include/json/assertions.h", | |
| "source/include/json/config.h", | |
| "source/include/json/forwards.h", | |
| "source/include/json/json.h", | |
| "source/include/json/json_features.h", | |
| "source/include/json/reader.h", | |
| "source/include/json/value.h", | |
| "source/include/json/version.h", | |
| "source/include/json/writer.h", | |
| "source/src/lib_json/json_reader.cpp", | |
| "source/src/lib_json/json_tool.h", | |
| "source/src/lib_json/json_value.cpp", | |
| "source/src/lib_json/json_writer.cpp", | |
| ] | |
| public_configs = [ ":jsoncpp_config" ] | |
| defines = [ | |
| "JSON_USE_EXCEPTION=0", | |
| "JSON_USE_NULLREF=0", | |
| ] | |
| include_dirs = [ "source/src/lib_json" ] | |
| if (!is_win || is_clang) { | |
| cflags_cc = [ "-Wno-implicit-fallthrough" ] | |
| } | |
| # jsoncpp makes use of static objects for things like a null singleton. | |
| configs += [ "//build/config/compiler:no_exit_time_destructors" ] | |
| # TODO(https://github.com/open-source-parsers/jsoncpp/pull/1612): Remove this | |
| # when the PR is merged. | |
| use_libcxx_modules = false | |
| } | |
| if (build_with_chromium) { | |
| fuzzer_test("jsoncpp_fuzzer") { | |
| sources = [ "fuzzers/json_fuzzer.cc" ] | |
| deps = [ ":jsoncpp" ] | |
| include_dirs = [ "generated" ] | |
| dict = "//testing/libfuzzer/fuzzers/dicts/json.dict" | |
| } | |
| } |