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

# The proto files need to be a component to avoid duplicate symbols the way the
# dependency structure is currently. Since proto_library generates a source
# set, here we link the result into a component.
component("proto") {
  output_name = "policy_proto"
  public_deps = [ ":proto_internal" ]
}

proto_library("policy_common_definitions_compile_proto") {
  visibility = [
    ":proto_internal",
    "//components/policy:chrome_settings_proto_generated_compile_proto",
    "//components/policy:cloud_policy_proto_generated_compile_proto",
    "//components/policy:generated",
  ]

  sources = [ "policy_common_definitions.proto" ]

  proto_out_dir = "components/policy/proto"
}

proto_library("proto_internal") {
  visibility = [ ":proto" ]

  sources = [
    "device_management_backend.proto",
    "policy_signing_key.proto",
  ]

  if (is_chromeos_ash) {
    sources += [
      "chrome_device_policy.proto",
      "install_attributes.proto",
    ]
  }

  if (!is_android && !is_ios) {
    sources += [ "chrome_extension_policy.proto" ]
  }

  extra_configs =
      [ "//third_party/private_membership:private_membership_config" ]

  import_dirs = [
    "//third_party/private_membership/src",
    "//third_party/shell-encryption/src",
    ".",
  ]

  link_deps = [
    ":policy_common_definitions_compile_proto",
    "//third_party/private_membership:private_membership_proto",
  ]

  cc_generator_options = "dllexport_decl=POLICY_PROTO_EXPORT:"
  cc_include = "components/policy/proto/policy_proto_export.h"
  component_build_force_source_set = true
  defines = [ "POLICY_PROTO_COMPILATION" ]
}

if (use_libfuzzer) {
  fuzzable_proto_library("chrome_device_policy_full_runtime_proto") {
    proto_out_dir = "components/policy/proto/fuzzer"

    sources = [
      "chrome_device_policy.proto",
      "policy_common_definitions.proto",
    ]
  }
}
