# Copyright 2018 The Chromium OS 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("//common-mk/proto_library.gni")

group("all") {
  deps = [
    ":libsystem_api",
    ":system_api-anomaly_detector-protos",
    ":system_api-attestation-goprotos",
    ":system_api-attestation-protos",
    ":system_api-authpolicy-protos",
    ":system_api-biod-protos",
    ":system_api-bootlockbox-goprotos",
    ":system_api-bootlockbox-protos",
    ":system_api-chaps-protos",
    ":system_api-chunneld-protos",
    ":system_api-cryptohome-goprotos",
    ":system_api-cryptohome-protos",
    ":system_api-dlcservice-protos",
    ":system_api-kerberos-goprotos",
    ":system_api-kerberos-protos",
    ":system_api-login_manager-goprotos",
    ":system_api-login_manager-protos",
    ":system_api-lorgnette-goprotos",
    ":system_api-lorgnette-protos",
    ":system_api-metrics_event-goprotos",
    ":system_api-metrics_event-protos",
    ":system_api-oobe_config-protos",
    ":system_api-patchpanel-goprotos",
    ":system_api-patchpanel-protos",
    ":system_api-plugin_vm_service-goprotos",
    ":system_api-plugin_vm_service-protos",
    ":system_api-power_manager-goprotos",
    ":system_api-power_manager-protos",
    ":system_api-protos",
    ":system_api-runtime_probe-goprotos",
    ":system_api-runtime_probe-protos",
    ":system_api-seneschal-goprotos",
    ":system_api-seneschal-protos",
    ":system_api-smbprovider-protos",
    ":system_api-system_proxy-protos",
    ":system_api-tpm_manager-protos",
    ":system_api-u2f-protos",
    ":system_api-update_engine-protos",
    ":system_api-vm_applications-protos",
    ":system_api-vm_cicerone-goprotos",
    ":system_api-vm_cicerone-protos",
    ":system_api-vm_concierge-goprotos",
    ":system_api-vm_concierge-protos",
    ":system_api-vm_permission_service-protos",
    ":system_api-vm_plugin_dispatcher-goprotos",
    ":system_api-vm_plugin_dispatcher-protos",
  ]
}

shared_library("libsystem_api") {
  deps = [
    ":system_api-attestation-protos",
    ":system_api-chaps-protos",
    ":system_api-patchpanel-protos",
    ":system_api-tpm_manager-protos",
  ]
  if (use.fuzzer) {
    pkg_deps = [ "protobuf" ]
  } else {
    pkg_deps = [ "protobuf-lite" ]
  }
}

proto_library("system_api-protos") {
  proto_in_dir = "dbus"
  proto_out_dir = "include/system_api/proto_bindings"
  sources = [
    "${proto_in_dir}/field_trial_list.proto",
    "${proto_in_dir}/mtp_file_entry.proto",
    "${proto_in_dir}/mtp_storage_info.proto",
  ]
  standalone = true
}

proto_library("system_api-power_manager-protos") {
  proto_in_dir = "dbus/power_manager"
  proto_out_dir = "include/power_manager/proto_bindings"
  sources = [
    "${proto_in_dir}/backlight.proto",
    "${proto_in_dir}/idle.proto",
    "${proto_in_dir}/input_event.proto",
    "${proto_in_dir}/peripheral_battery_status.proto",
    "${proto_in_dir}/policy.proto",
    "${proto_in_dir}/power_supply_properties.proto",
    "${proto_in_dir}/suspend.proto",
    "${proto_in_dir}/switch_states.proto",
    "${proto_in_dir}/thermal.proto",
  ]
  standalone = true
}

goproto_library("system_api-power_manager-goprotos") {
  proto_in_dir = "dbus/power_manager"
  proto_out_dir = "go/src/chromiumos/system_api/power_manager_proto"
  sources = [
    "${proto_in_dir}/backlight.proto",
    "${proto_in_dir}/idle.proto",
    "${proto_in_dir}/input_event.proto",
    "${proto_in_dir}/peripheral_battery_status.proto",
    "${proto_in_dir}/policy.proto",
    "${proto_in_dir}/power_supply_properties.proto",
    "${proto_in_dir}/suspend.proto",
    "${proto_in_dir}/switch_states.proto",
    "${proto_in_dir}/thermal.proto",
  ]
}

proto_library("system_api-cryptohome-protos") {
  proto_in_dir = "dbus/cryptohome"
  proto_out_dir = "include/cryptohome/proto_bindings"
  sources = [
    "${proto_in_dir}/UserDataAuth.proto",
    "${proto_in_dir}/fido.proto",
    "${proto_in_dir}/key.proto",
    "${proto_in_dir}/rpc.proto",
    "${proto_in_dir}/signed_secret.proto",
  ]
  standalone = true
}

goproto_library("system_api-cryptohome-goprotos") {
  proto_in_dir = "dbus/cryptohome"
  proto_out_dir = "go/src/chromiumos/system_api/cryptohome_proto"
  sources = [
    "${proto_in_dir}/fido.proto",
    "${proto_in_dir}/key.proto",
    "${proto_in_dir}/rpc.proto",
  ]
}

proto_library("system_api-authpolicy-protos") {
  proto_in_dir = "dbus/authpolicy"
  proto_out_dir = "include/authpolicy/proto_bindings"
  sources = [ "${proto_in_dir}/active_directory_info.proto" ]
  standalone = true
}

proto_library("system_api-biod-protos") {
  proto_in_dir = "dbus/biod"
  proto_out_dir = "include/biod/proto_bindings"
  sources = [
    "${proto_in_dir}/constants.proto",
    "${proto_in_dir}/messages.proto",
  ]
  standalone = true
}

proto_library("system_api-kerberos-protos") {
  proto_in_dir = "dbus/kerberos"
  proto_out_dir = "include/kerberos/proto_bindings"
  sources = [ "${proto_in_dir}/kerberos_service.proto" ]
  standalone = true
}

goproto_library("system_api-kerberos-goprotos") {
  proto_in_dir = "dbus/kerberos"
  proto_out_dir = "go/src/chromiumos/system_api/kerberos_proto"
  sources = [ "${proto_in_dir}/kerberos_service.proto" ]
}

proto_library("system_api-login_manager-protos") {
  proto_in_dir = "dbus/login_manager"
  proto_out_dir = "include/login_manager/proto_bindings"
  sources = [
    "${proto_in_dir}/arc.proto",
    "${proto_in_dir}/login_screen_storage.proto",
    "${proto_in_dir}/policy_descriptor.proto",
  ]
  standalone = true

  # Override optimize_for option in proto file.
  # Needed for fuzz targets using libprotobuf-mutator.
  if (use.fuzzer) {
    gen_cpp_mode = "speed"
  }
}

goproto_library("system_api-login_manager-goprotos") {
  proto_in_dir = "dbus/login_manager"
  proto_out_dir = "go/src/chromiumos/system_api/login_manager_proto"
  sources = [ "${proto_in_dir}/policy_descriptor.proto" ]
}

proto_library("system_api-lorgnette-protos") {
  proto_in_dir = "dbus/lorgnette"
  proto_out_dir = "include/lorgnette/proto_bindings"
  sources = [ "${proto_in_dir}/lorgnette_service.proto" ]
  standalone = true
}

goproto_library("system_api-lorgnette-goprotos") {
  proto_in_dir = "dbus/lorgnette"
  proto_out_dir = "go/src/chromiumos/system_api/lorgnette_proto"
  sources = [ "${proto_in_dir}/lorgnette_service.proto" ]
}

proto_library("system_api-chaps-protos") {
  proto_in_dir = "dbus/chaps"
  proto_out_dir = "include/chaps/proto_bindings"
  sources = [
    "${proto_in_dir}/ck_structs.proto",
    "${proto_in_dir}/key_permissions.proto",
  ]
  standalone = true

  # system_api-chaps-protos" is used by a shared_library
  # object, so we need to build it with "-fPIC" instead of "-fPIE".
  use_pic = true
}

proto_library("system_api-attestation-protos") {
  proto_in_dir = "dbus/attestation"
  proto_out_dir = "include/attestation/proto_bindings"
  sources = [
    "${proto_in_dir}/attestation_ca.proto",
    "${proto_in_dir}/google_key.proto",
    "${proto_in_dir}/interface.proto",
    "${proto_in_dir}/keystore.proto",
    "${proto_in_dir}/pca_agent.proto",
  ]
  standalone = true

  # system_api-attestation-protos" is used by a shared_library
  # object, so we need to build it with "-fPIC" instead of "-fPIE".
  use_pic = true
}

goproto_library("system_api-attestation-goprotos") {
  proto_in_dir = "dbus/attestation"
  proto_out_dir = "go/src/chromiumos/system_api/attestation_proto"
  sources = [
    "${proto_in_dir}/attestation_ca.proto",
    "${proto_in_dir}/interface.proto",
    "${proto_in_dir}/keystore.proto",
  ]
}

proto_library("system_api-tpm_manager-protos") {
  proto_in_dir = "dbus/tpm_manager"
  proto_out_dir = "include/tpm_manager/proto_bindings"
  sources = [ "${proto_in_dir}/tpm_manager.proto" ]
  standalone = true

  # system_api-tpm_manager-protos is used by a shared_library
  # object, so we need to build it with "-fPIC" instead of "-fPIE".
  use_pic = true
}

proto_library("system_api-metrics_event-protos") {
  proto_in_dir = "dbus/metrics_event"
  proto_out_dir = "include/metrics_event/proto_bindings"
  sources = [ "${proto_in_dir}/metrics_event.proto" ]
  standalone = true
}

goproto_library("system_api-metrics_event-goprotos") {
  proto_in_dir = "dbus/metrics_event"
  proto_out_dir = "go/src/chromiumos/system_api/metrics_event_proto"
  sources = [ "${proto_in_dir}/metrics_event.proto" ]
}

proto_library("system_api-plugin_vm_service-protos") {
  proto_in_dir = "dbus/plugin_vm_service"
  proto_out_dir = "include/plugin_vm_service/proto_bindings"
  sources = [ "${proto_in_dir}/plugin_vm_service.proto" ]
  standalone = true
}

goproto_library("system_api-plugin_vm_service-goprotos") {
  proto_in_dir = "dbus/plugin_vm_service"
  proto_out_dir = "go/src/chromiumos/system_api/plugin_vm_service_proto"
  sources = [ "${proto_in_dir}/plugin_vm_service.proto" ]
}

proto_library("system_api-smbprovider-protos") {
  proto_in_dir = "dbus/smbprovider"
  proto_out_dir = "include/smbprovider/proto_bindings"
  sources = [ "${proto_in_dir}/directory_entry.proto" ]
  standalone = true
}

proto_library("system_api-vm_cicerone-protos") {
  proto_in_dir = "dbus/vm_cicerone"
  proto_out_dir = "include/vm_cicerone/proto_bindings"
  sources = [ "${proto_in_dir}/cicerone_service.proto" ]
  standalone = true
}

goproto_library("system_api-vm_cicerone-goprotos") {
  proto_in_dir = "dbus/vm_cicerone"
  proto_out_dir = "go/src/chromiumos/system_api/vm_cicerone_proto"
  sources = [ "${proto_in_dir}/cicerone_service.proto" ]
}

proto_library("system_api-vm_concierge-protos") {
  proto_in_dir = "dbus/vm_concierge"
  proto_out_dir = "include/vm_concierge/proto_bindings"
  sources = [ "${proto_in_dir}/concierge_service.proto" ]
  standalone = true
}

goproto_library("system_api-vm_concierge-goprotos") {
  proto_in_dir = "dbus/vm_concierge"
  proto_out_dir = "go/src/chromiumos/system_api/vm_concierge_proto"
  sources = [ "${proto_in_dir}/concierge_service.proto" ]
}

proto_library("system_api-vm_applications-protos") {
  proto_in_dir = "dbus/vm_applications"
  proto_out_dir = "include/vm_applications/proto_bindings"
  sources = [ "${proto_in_dir}/apps.proto" ]
  standalone = true
}

proto_library("system_api-seneschal-protos") {
  proto_in_dir = "dbus/seneschal"
  proto_out_dir = "include/seneschal/proto_bindings"
  sources = [ "${proto_in_dir}/seneschal_service.proto" ]
  standalone = true
}

goproto_library("system_api-seneschal-goprotos") {
  proto_in_dir = "dbus/seneschal"
  proto_out_dir = "go/src/chromiumos/system_api/seneschal_proto"
  sources = [ "${proto_in_dir}/seneschal_service.proto" ]
}

proto_library("system_api-oobe_config-protos") {
  proto_in_dir = "dbus/oobe_config"
  proto_out_dir = "include/oobe_config/proto_bindings"
  sources = [ "${proto_in_dir}/oobe_config.proto" ]
  standalone = true
}

proto_library("system_api-runtime_probe-protos") {
  proto_in_dir = "dbus/runtime_probe"
  proto_out_dir = "include/runtime_probe/proto_bindings"
  sources = [ "${proto_in_dir}/runtime_probe.proto" ]
  standalone = true
}

goproto_library("system_api-runtime_probe-goprotos") {
  proto_in_dir = "dbus/runtime_probe"
  proto_out_dir = "go/src/chromiumos/system_api/runtime_probe_proto"
  sources = [ "${proto_in_dir}/runtime_probe.proto" ]
}

proto_library("system_api-bootlockbox-protos") {
  proto_in_dir = "dbus/bootlockbox"
  proto_out_dir = "include/bootlockbox/proto_bindings"
  sources = [ "${proto_in_dir}/boot_lockbox_rpc.proto" ]
  standalone = true
}

goproto_library("system_api-bootlockbox-goprotos") {
  proto_in_dir = "dbus/bootlockbox"
  proto_out_dir = "go/src/chromiumos/system_api/bootlockbox_proto"
  sources = [ "${proto_in_dir}/boot_lockbox_rpc.proto" ]
}

proto_library("system_api-dlcservice-protos") {
  proto_in_dir = "dbus/dlcservice"
  proto_out_dir = "include/dlcservice/proto_bindings"
  sources = [ "${proto_in_dir}/dlcservice.proto" ]
  standalone = true
}

proto_library("system_api-update_engine-protos") {
  proto_in_dir = "dbus/update_engine"
  proto_out_dir = "include/update_engine/proto_bindings"
  sources = [ "${proto_in_dir}/update_engine.proto" ]
  standalone = true
}

proto_library("system_api-vm_plugin_dispatcher-protos") {
  proto_in_dir = "dbus/vm_plugin_dispatcher"
  proto_out_dir = "include/vm_plugin_dispatcher/proto_bindings"
  sources = [ "${proto_in_dir}/vm_plugin_dispatcher.proto" ]
  standalone = true
}

goproto_library("system_api-vm_plugin_dispatcher-goprotos") {
  proto_in_dir = "dbus/vm_plugin_dispatcher"
  proto_out_dir = "go/src/chromiumos/system_api/vm_plugin_dispatcher_proto"
  sources = [ "${proto_in_dir}/vm_plugin_dispatcher.proto" ]
}

proto_library("system_api-u2f-protos") {
  proto_in_dir = "dbus/u2f"
  proto_out_dir = "include/u2f/proto_bindings"
  sources = [ "${proto_in_dir}/u2f_interface.proto" ]
  standalone = true
}

proto_library("system_api-chunneld-protos") {
  proto_in_dir = "dbus/chunneld"
  proto_out_dir = "include/chunneld/proto_bindings"
  sources = [ "${proto_in_dir}/chunneld_service.proto" ]
  standalone = true
}

proto_library("system_api-patchpanel-protos") {
  proto_in_dir = "dbus/patchpanel"
  proto_out_dir = "include/patchpanel/proto_bindings"
  sources = [ "${proto_in_dir}/patchpanel_service.proto" ]
  standalone = true
  use_pic = true
}

goproto_library("system_api-patchpanel-goprotos") {
  proto_in_dir = "dbus/patchpanel"
  proto_out_dir = "go/src/chromiumos/system_api/patchpanel_proto"
  sources = [ "${proto_in_dir}/patchpanel_service.proto" ]
}

proto_library("system_api-anomaly_detector-protos") {
  proto_in_dir = "dbus/anomaly_detector"
  proto_out_dir = "include/anomaly_detector/proto_bindings"
  sources = [ "${proto_in_dir}/anomaly_detector.proto" ]
  standalone = true
}

proto_library("system_api-system_proxy-protos") {
  proto_in_dir = "dbus/system_proxy"
  proto_out_dir = "include/system_proxy/proto_bindings"
  sources = [ "${proto_in_dir}/system_proxy_service.proto" ]
  standalone = true
}

proto_library("system_api-vm_permission_service-protos") {
  proto_in_dir = "dbus/vm_permission_service"
  proto_out_dir = "include/vm_permission_service/proto_bindings"
  sources = [ "${proto_in_dir}/vm_permission_service.proto" ]
  standalone = true
}
