# 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-dlcservice-protos",
    ":system_api-dlp-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-minios-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-rmad-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-goprotos",
    ":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_disk_management-protos",
    ":system_api-vm_permission_service-protos",
    ":system_api-vm_plugin_dispatcher-goprotos",
    ":system_api-vm_plugin_dispatcher-protos",
    ":system_api-vm_sk_forwarding-protos",
  ]
}

shared_library("libsystem_api") {
  deps = [
    ":system_api-attestation-protos",
    ":system_api-bootlockbox-protos",
    ":system_api-chaps-protos",
    ":system_api-cryptohome-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/"
  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

  # system_api-cryptohome-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-cryptohome-goprotos") {
  proto_in_dir = "dbus/cryptohome"
  proto_out_dir = "go/src/"
  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/"
  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/"
  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/"
  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/"
  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
}

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

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/"
  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/"
  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/"
  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/"
  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-vm_sk_forwarding-protos") {
  proto_in_dir = "dbus/vm_sk_forwarding"
  proto_out_dir = "include/vm_sk_forwarding/proto_bindings"
  sources = [ "${proto_in_dir}/sk_forwarding.proto" ]
  standalone = true
}

proto_library("system_api-vm_disk_management-protos") {
  proto_in_dir = "dbus/vm_disk_management"
  proto_out_dir = "include/vm_disk_management/proto_bindings"
  sources = [ "${proto_in_dir}/disk_management.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/"
  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/"
  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

  # system_api-bootlockbox-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-bootlockbox-goprotos") {
  proto_in_dir = "dbus/bootlockbox"
  proto_out_dir = "go/src/"
  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/"
  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/"
  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
}

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

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

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