# 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-fusebox-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
}

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