# Copyright (c) 2019 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. # SPDX-License-Identifier: Apache-2.0 load("//bazel_tools:scala.bzl", "da_scala_binary", "da_scala_library") da_scala_binary( name = "compiler_plugin", srcs = glob(["*.scala"]), main_class = "protoc.plugins.scalapb.ScalaPbCompilerPlugin", visibility = ["//visibility:public"], runtime_deps = [ "@com_github_scalapb_scalapb//:scala-library", ], deps = [ "//3rdparty/jvm/com/google/protobuf:protobuf_java", "//3rdparty/jvm/com/thesamet/scalapb:compilerplugin", "//3rdparty/jvm/com/thesamet/scalapb:protoc_bridge", ], ) # From https://github.com/stackb/rules_proto/blob/3f890f5d6774bd74df28e89b20f34155dfe77732/scala/BUILD.bazel#L78-L97 # Curiously this didn't work # # genrule( # name = "gen_protoc_gen_scala", # srcs = ["compiler_plugin_deploy.jar", "@local_jdk//:bin/java"], # outs = ["protoc-gen-scala.sh"], # cmd = """ # echo '$(location @local_jdk//:bin/java) -jar $(location protoc_gen_deploy.jar) $$@' > $@ # """, # executable = True, # ) # ====================================================================== # # Unable to get either bazel or maybe protoc to call a plugin whose # implementation was fronted by a shell script (from a genrule). So, the only # way this seemed to work was compile an executable that calls 'java -jar # protoc_gen_scala_deploy.jar'. Either figure out how to do this in java # directly or write the wrapper in C++ ot remove the go dependency here. # load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") go_library( name = "go_default_library", srcs = [ "protoc-gen-scalapb.go", ], importpath = "github.com/digital-asset/daml/scala/protoc-gen-scalapb", visibility = ["//visibility:public"], ) go_binary( name = "protoc-gen-scalapb", data = [ ":compiler_plugin_deploy.jar", "@bazel_tools//tools/jdk:jre", ], embed = [":go_default_library"], visibility = ["//visibility:public"], )