# 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.

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

  # TODO(crbug.com/983223): Update JsonCpp BUILD.gn to remove deprecated
  # declaration flag.
  # This temporary flag allowing clients to update to the new version, and then
  # update to the new StreamWriter and CharReader classes.
  if (!is_win || is_clang) {
    cflags_cc = [ "-Wno-deprecated-declarations" ]
  }
}

source_set("jsoncpp") {
  sources = [
    "generated/version.h",
    "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/value.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" ]
  }
}
