daml/scala-protoc-plugins/scalapb/BUILD.bazel
2019-04-04 16:20:07 +02:00

62 lines
2.0 KiB
Python

# 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_library", "da_scala_binary")
da_scala_binary(
name = "compiler_plugin",
srcs = glob(["*.scala"]),
main_class = "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:protoc_bridge',
'//3rdparty/jvm/com/thesamet/scalapb:compilerplugin',
],
)
# 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"],
)