summaryrefslogtreecommitdiff
path: root/rust/protobuf.go
diff options
context:
space:
mode:
Diffstat (limited to 'rust/protobuf.go')
-rw-r--r--rust/protobuf.go22
1 files changed, 13 insertions, 9 deletions
diff --git a/rust/protobuf.go b/rust/protobuf.go
index 28a4597f9..ca4015402 100644
--- a/rust/protobuf.go
+++ b/rust/protobuf.go
@@ -55,17 +55,17 @@ type protobufDecorator struct {
func (proto *protobufDecorator) GenerateSource(ctx ModuleContext, deps PathDeps) android.Path {
var protoFlags android.ProtoFlags
- var pluginPath android.Path
+ var pluginPaths android.Paths
protoFlags.OutTypeFlag = "--rust_out"
outDir := android.PathForModuleOut(ctx)
- pluginPath, protoFlags = proto.setupPlugin(ctx, protoFlags, outDir)
+ pluginPaths, protoFlags = proto.setupPlugin(ctx, protoFlags, outDir)
protoFlags.Flags = append(protoFlags.Flags, defaultProtobufFlags...)
protoFlags.Flags = append(protoFlags.Flags, proto.Properties.Proto_flags...)
- protoFlags.Deps = append(protoFlags.Deps, pluginPath)
+ protoFlags.Deps = append(protoFlags.Deps, pluginPaths...)
protoFile := android.OptionalPathForModuleSrc(ctx, proto.Properties.Proto)
if !protoFile.Valid() {
@@ -90,21 +90,25 @@ func (proto *protobufDecorator) GenerateSource(ctx ModuleContext, deps PathDeps)
return modFile
}
-func (proto *protobufDecorator) setupPlugin(ctx ModuleContext, protoFlags android.ProtoFlags, outDir android.ModuleOutPath) (android.Path, android.ProtoFlags) {
- var pluginPath android.Path
+func (proto *protobufDecorator) setupPlugin(ctx ModuleContext, protoFlags android.ProtoFlags, outDir android.ModuleOutPath) (android.Paths, android.ProtoFlags) {
+ pluginPaths := []android.Path{}
if proto.plugin == Protobuf {
- pluginPath = ctx.Config().HostToolPath(ctx, "protoc-gen-rust")
+ pluginPath := ctx.Config().HostToolPath(ctx, "protoc-gen-rust")
+ pluginPaths = append(pluginPaths, pluginPath)
protoFlags.Flags = append(protoFlags.Flags, "--plugin="+pluginPath.String())
} else if proto.plugin == Grpc {
- pluginPath = ctx.Config().HostToolPath(ctx, "grpc_rust_plugin")
+ grpcPath := ctx.Config().HostToolPath(ctx, "grpc_rust_plugin")
+ protobufPath := ctx.Config().HostToolPath(ctx, "protoc-gen-rust")
+ pluginPaths = append(pluginPaths, grpcPath, protobufPath)
protoFlags.Flags = append(protoFlags.Flags, "--grpc_out="+outDir.String())
- protoFlags.Flags = append(protoFlags.Flags, "--plugin=protoc-gen-grpc="+pluginPath.String())
+ protoFlags.Flags = append(protoFlags.Flags, "--plugin=protoc-gen-grpc="+grpcPath.String())
+ protoFlags.Flags = append(protoFlags.Flags, "--plugin=protoc-gen-rust="+protobufPath.String())
} else {
ctx.ModuleErrorf("Unknown protobuf plugin type requested")
}
- return pluginPath, protoFlags
+ return pluginPaths, protoFlags
}
func (proto *protobufDecorator) SourceProviderProps() []interface{} {