1module( 2 name = "grpc-client-server", 3 version = "0.0.0", 4) 5 6############################################################################### 7# B A Z E L C E N T R A L R E G I S T R Y # https://registry.bazel.build/ 8############################################################################### 9# https://github.com/bazelbuild/rules_rust/releases 10bazel_dep(name = "rules_rust", version = "0.46.0") 11local_path_override( 12 module_name = "rules_rust", 13 path = "../../..", 14) 15 16# 17# Rules for protobuf / gRPC 18# https://github.com/bazelbuild/rules_proto/releases 19bazel_dep(name = "rules_proto", version = "6.0.2") 20 21# https://github.com/aspect-build/toolchains_protoc/releases 22bazel_dep(name = "toolchains_protoc", version = "0.3.1") 23 24# https://registry.bazel.build/modules/protobuf 25bazel_dep(name = "protobuf", version = "27.1") 26 27# https://github.com/bazel-contrib/toolchains_llvm 28bazel_dep(name = "toolchains_llvm", version = "1.0.0") 29 30############################################################################### 31# L L V M 32# https://github.com/bazel-contrib/toolchains_llvm/blob/master/tests/MODULE.bazel 33############################################################################### 34llvm = use_extension("@toolchains_llvm//toolchain/extensions:llvm.bzl", "llvm") 35 36# LLVM Versions and platforms 37# https://github.com/bazel-contrib/toolchains_llvm/blob/master/toolchain/internal/llvm_distributions.bzl 38LLVM_VERSIONS = { 39 "": "16.0.0", 40 "darwin-aarch64": "16.0.3", 41 "darwin-x86_64": "15.0.7", 42} 43 44# Host LLVM toolchain. 45llvm.toolchain( 46 name = "llvm_toolchain", 47 llvm_versions = LLVM_VERSIONS, 48) 49use_repo(llvm, "llvm_toolchain", "llvm_toolchain_llvm") 50 51register_toolchains("@llvm_toolchain//:all") 52 53############################################################################### 54# T O O L C H A I N S 55############################################################################### 56 57# Rust toolchain 58RUST_EDITION = "2021" 59 60RUST_VERSION = "1.79.0" 61 62rust = use_extension("@rules_rust//rust:extensions.bzl", "rust") 63rust.toolchain( 64 edition = RUST_EDITION, 65 versions = [RUST_VERSION], 66) 67use_repo(rust, "rust_toolchains") 68 69register_toolchains("@rust_toolchains//:all") 70 71# Proto toolchain 72register_toolchains("@rules_rust//proto/protobuf:default-proto-toolchain") 73 74# Custom Prost toolchain 75register_toolchains("@//build/prost_toolchain") 76 77############################################################################### 78# R U S T C R A T E S 79############################################################################### 80crate = use_extension("@rules_rust//crate_universe:extension.bzl", "crate") 81 82# 83# protobuf / gRPC dependencies 84crate.spec( 85 package = "prost", 86 version = "0.12", 87) 88crate.spec( 89 default_features = False, 90 package = "prost-types", 91 version = "0.12", 92) 93crate.spec( 94 features = ["transport"], 95 package = "tonic", 96 version = "0.11", 97) 98crate.spec( 99 package = "tonic-build", 100 version = "0.11", 101) 102crate.spec( 103 package = "protoc-gen-prost", 104 version = "0.3.1", 105) 106crate.annotation( 107 crate = "protoc-gen-prost", 108 gen_binaries = ["protoc-gen-prost"], 109) 110crate.spec( 111 package = "protoc-gen-tonic", 112 version = "0.4.0", 113) 114crate.annotation( 115 crate = "protoc-gen-tonic", 116 gen_binaries = ["protoc-gen-tonic"], 117) 118 119# 120# External crates 121crate.spec( 122 default_features = False, 123 features = [ 124 "macros", 125 "net", 126 "rt-multi-thread", 127 "signal", 128 ], 129 package = "tokio", 130 version = "1.38", 131) 132crate.from_specs() 133use_repo(crate, "crates") 134