1# Copyright 2019 Google LLC 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15load("@com_github_grpc_grpc//bazel:cc_grpc_library.bzl", "cc_grpc_library") 16load("@org_tensorflow//tensorflow/core/platform:build_config.bzl", "tf_proto_library") 17load("@com_github_grpc_grpc//bazel:python_rules.bzl", "py_proto_library") 18 19default_visibility = [ 20 "//visibility:public", 21] 22 23package( 24 default_visibility = default_visibility, 25 licenses = ["notice"], # Apache 2.0 26) 27 28# -------------------------------------------------------------------- 29# federated_api.proto 30 31# The api protos. 32proto_library( 33 name = "federated_api_proto", 34 srcs = ["federated_api.proto"], 35 deps = [ 36 "//fcp/secagg/shared:proto", 37 "@com_google_googleapis//google/rpc:code_proto", 38 "@com_google_protobuf//:any_proto", 39 "@com_google_protobuf//:duration_proto", 40 ], 41) 42 43py_proto_library( 44 name = "federated_api_py_pb2", 45 deps = [":federated_api_proto"], 46) 47 48java_proto_library( 49 name = "federated_api_java_proto", 50 deps = [":federated_api_proto"], 51) 52 53cc_proto_library( 54 name = "federated_api_cc_proto", 55 deps = [":federated_api_proto"], 56) 57 58cc_grpc_library( 59 name = "cc_grpc", 60 srcs = [":federated_api_proto"], 61 generate_mocks = True, 62 grpc_only = True, 63 deps = [":federated_api_cc_proto"], 64) 65 66# -------------------------------------------------------------------- 67# plan.proto 68 69# Using tf_proto_library to get dependencies to TF protos built correctly. 70tf_proto_library( 71 name = "plan_proto", 72 srcs = ["plan.proto"], 73 protodeps = [ 74 "@org_tensorflow//tensorflow/core:protos_all", 75 ], 76 visibility = default_visibility, 77) 78 79alias( 80 name = "plan_py_pb2", 81 actual = "plan_proto_py", 82) 83 84java_proto_library( 85 name = "plan_java_proto", 86 deps = [":plan_proto"], 87) 88 89# Allowing to refer to the cc library generated by the rule above in usual way: 90alias( 91 name = "plan_cc_proto", 92 actual = "plan_proto_cc", 93 visibility = default_visibility + [ 94 ], 95) 96 97# -------------------------------------------------------------------- 98# opstats.proto 99 100proto_library( 101 name = "opstats_proto", 102 srcs = ["opstats.proto"], 103 deps = [ 104 ":federated_api_proto", 105 "@com_google_protobuf//:duration_proto", 106 "@com_google_protobuf//:timestamp_proto", 107 ], 108) 109 110cc_proto_library( 111 name = "opstats_cc_proto", 112 deps = [":opstats_proto"], 113) 114 115# -------------------------------------------------------------------- 116# task_eligibility_context.proto 117 118proto_library( 119 name = "task_eligibility_context_proto", 120 srcs = ["task_eligibility_context.proto"], 121) 122 123java_proto_library( 124 name = "task_eligibility_context_java_proto", 125 deps = [":task_eligibility_context_proto"], 126) 127