chromium/components/variations/proto/BUILD.gn

# 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("//build/config/chromeos/ui_mode.gni")
import("//testing/libfuzzer/fuzzer_test.gni")
import("//third_party/libprotobuf-mutator/fuzzable_proto_library.gni")
import("//third_party/protobuf/proto_library.gni")

if (is_android) {
  import("//build/config/android/rules.gni")

  proto_java_library("proto_java") {
    proto_path = "."
    sources = [
      "client_variations.proto",
      "layer.proto",
      "study.proto",
      "variations_seed.proto",
    ]
  }
}

fuzzable_proto_library("proto") {
  sources = [
    "client_variations.proto",
    "layer.proto",
    "study.proto",
    "variations_seed.proto",
  ]

  # The generated JavaScript bindings are used to build a small, self-contained
  # parser for ClientVariations in Dev Tools. This parser is used to decode the
  # X-Client-Data header.
  # Note: This doesn't do anything when use_libfuzzer is true.
  generate_javascript = true
}

# Some of the Windows builders do not support Java, which is a required
# dependency for this build target. The fuzzable_proto_library doesn't support
# building JS protos when use_fuzzing_engine_with_lpm is true.This target is only built
# manually, so it's fine to limit it to Linux non-fuzzer builds.
if (is_linux && !use_fuzzing_engine_with_lpm) {
  group("devtools") {
    deps = [ "devtools" ]
  }
}