aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorA Googler <no-reply@google.com>2023-09-20 08:39:36 -0700
committerBlaze Rules Copybara <blaze-rules@google.com>2023-09-20 08:40:10 -0700
commit673e59ea247296c95c51ac01de67f4de8f7a846a (patch)
tree678311e10c345c52fdd30c32cdea5f4d9ef30da1
parentbb745f946a0b033dc50b7671bea10c9395e53e4d (diff)
downloadbazelbuild-rules-proto-673e59ea247296c95c51ac01de67f4de8f7a846a.tar.gz
Wrap proto_lang_toolchain into a macro creating a toolchain
Issue: https://github.com/bazelbuild/rules_proto/issues/179 PiperOrigin-RevId: 566975629
-rw-r--r--proto/defs.bzl15
-rw-r--r--proto/proto_lang_toolchain.bzl42
2 files changed, 45 insertions, 12 deletions
diff --git a/proto/defs.bzl b/proto/defs.bzl
index 3fb566f..80af9f8 100644
--- a/proto/defs.bzl
+++ b/proto/defs.bzl
@@ -14,6 +14,7 @@
"""Starlark rules for building protocol buffers."""
+load("//proto:proto_lang_toolchain.bzl", _proto_lang_toolchain = "proto_lang_toolchain")
load("//proto/private:native.bzl", "NativeProtoInfo", "native_proto_common")
load("//proto/private/rules:proto_descriptor_set.bzl", _proto_descriptor_set = "proto_descriptor_set")
@@ -26,18 +27,6 @@ def _add_migration_tag(attrs):
attrs["tags"] = [_MIGRATION_TAG]
return attrs
-def proto_lang_toolchain(**attrs):
- """Bazel proto_lang_toolchain rule.
-
- https://docs.bazel.build/versions/master/be/protocol-buffer.html#proto_lang_toolchain
-
- Args:
- **attrs: Rule attributes
- """
-
- # buildifier: disable=native-proto
- native.proto_lang_toolchain(**_add_migration_tag(attrs))
-
def proto_library(**attrs):
"""Bazel proto_library rule.
@@ -52,6 +41,8 @@ def proto_library(**attrs):
proto_descriptor_set = _proto_descriptor_set
+proto_lang_toolchain = _proto_lang_toolchain
+
# Encapsulates information provided by `proto_library`.
#
# https://docs.bazel.build/versions/master/skylark/lib/ProtoInfo.html
diff --git a/proto/proto_lang_toolchain.bzl b/proto/proto_lang_toolchain.bzl
new file mode 100644
index 0000000..3ab721a
--- /dev/null
+++ b/proto/proto_lang_toolchain.bzl
@@ -0,0 +1,42 @@
+# Copyright 2019 The Bazel Authors. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""proto_lang_toolchain rule"""
+
+def proto_lang_toolchain(*, name, toolchain_type = None, exec_compatible_with = [], target_compatible_with = [], **attrs):
+ """Creates a proto_lang_toolchain and corresponding toolchain target.
+
+ Toolchain target is only created when toolchain_type is set.
+
+ https://docs.bazel.build/versions/master/be/protocol-buffer.html#proto_lang_toolchain
+
+ Args:
+
+ name: name of the toolchain
+ toolchain_type: The toolchain type
+ exec_compatible_with: ([constraints]) List of constraints the prebuild binaries is compatible with.
+ target_compatible_with: ([constraints]) List of constraints the target libraries are compatible with.
+ **attrs: Rule attributes
+ """
+
+ # buildifier: disable=native-proto
+ native.proto_lang_toolchain(name = name, **attrs)
+
+ if toolchain_type:
+ native.toolchain(
+ name = name + "_toolchain",
+ toolchain_type = toolchain_type,
+ exec_compatible_with = exec_compatible_with,
+ target_compatible_with = target_compatible_with,
+ toolchain = name,
+ )