# Copyright 2017 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("//third_party/protobuf/proto_library.gni")

proto_library("json_proto") {
  sources = [
    "json.proto",
  ]

  # This way json.pb.h header goes into "$root_gen_dir" directory precisely,
  # otherwise it goes into "$root_gen_dir" + "/testing/libfuzzer/proto/".
  proto_out_dir = ""
}

source_set("json_proto_converter") {
  sources = [
    "json_proto_converter.cc",
    "json_proto_converter.h",
  ]
  deps = [
    ":json_proto",
  ]
}

static_library("skia_image_filter_converter") {
  sources = [
    "skia_image_filter_proto_converter.cc",
    "skia_image_filter_proto_converter.h",
  ]
  deps = [
    ":skia_image_filter_proto",
    "//base",
    "//skia",
    "//third_party/libprotobuf-mutator",
  ]
  defines = [ "AVOID_MISBEHAVIOR=1" ]
  testonly = true

  #  Can't disable instrumentation because of container-overflow false
  # positives.
  # Assertion failures and integer oveflows in skia are uninteresting.
  if (is_debug || is_ubsan) {
    all_dependent_configs = [ "//testing/libfuzzer:no_clusterfuzz" ]
  }
}
proto_library("skia_image_filter_proto") {
  sources = [
    "skia_image_filter.proto",
  ]
}
