aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Mike Lewis <lewis@squareup.com>2018-04-13 10:29:11 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-13 10:30:26 -0700
commit28daf76e8f86370b9276a3e248d4c2eddf275d44 (patch)
tree439c1394fdb77b7cafd32454d12fb0812e1669e5
parentd60bb5c4131ea7b389b8cef8faaa0983d191e583 (diff)
Adding toolchain support for j2objc protos
Ran into an issue where it wasn't possible to add protos to blacklist for j2objc toolchain and was getting duplicate symbols for the descriptor protos. This change should make it consistent with the other proto rules which use a toolchain. Was able to remove bespoke and uncustomizable proto blacklist for j2objc. Closes #4064. PiperOrigin-RevId: 192787964
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java128
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/proto/ProtoConfiguration.java16
-rw-r--r--src/test/java/com/google/devtools/build/lib/packages/util/MockJ2ObjcSupport.java8
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java82
-rw-r--r--tools/j2objc/BUILD10
-rw-r--r--tools/j2objc/dummy.proto21
6 files changed, 184 insertions, 81 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
index 73a3557164..6ff76b83da 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
@@ -14,11 +14,12 @@
package com.google.devtools.build.lib.rules.objc;
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode.TARGET;
import static com.google.devtools.build.lib.packages.Attribute.attr;
import static com.google.devtools.build.lib.packages.BuildType.LABEL;
import static java.nio.charset.StandardCharsets.ISO_8859_1;
-import com.google.common.base.Joiner;
import com.google.common.base.Optional;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
@@ -68,6 +69,7 @@ import com.google.devtools.build.lib.rules.objc.J2ObjcSource.SourceType;
import com.google.devtools.build.lib.rules.proto.ProtoCommon;
import com.google.devtools.build.lib.rules.proto.ProtoCompileActionBuilder;
import com.google.devtools.build.lib.rules.proto.ProtoConfiguration;
+import com.google.devtools.build.lib.rules.proto.ProtoLangToolchainProvider;
import com.google.devtools.build.lib.rules.proto.ProtoSourceFileBlacklist;
import com.google.devtools.build.lib.rules.proto.ProtoSourcesProvider;
import com.google.devtools.build.lib.rules.proto.ProtoSupportDataProvider;
@@ -76,6 +78,7 @@ import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndData;
import com.google.devtools.build.lib.util.FileType;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.util.List;
+import java.util.stream.Collectors;
/** J2ObjC transpilation aspect for Java and proto rules. */
public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectFactory {
@@ -86,6 +89,13 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF
private static final ExtraCompileArgs EXTRA_COMPILE_ARGS = new ExtraCompileArgs(
"-fno-strict-overflow");
+ private static LabelLateBoundDefault<?> getProtoToolchainLabel(String defaultValue) {
+ return LabelLateBoundDefault.fromTargetConfiguration(
+ ProtoConfiguration.class,
+ Label.parseAbsoluteUnchecked(defaultValue),
+ (rule, attributes, protoConfig) -> protoConfig.protoToolchainForJ2objc());
+ }
+
public J2ObjcAspect(String toolsRepository) {
this.toolsRepository = toolsRepository;
}
@@ -98,14 +108,9 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF
new Attribute("runtime_deps", Mode.TARGET));
private static final ImmutableList<Attribute> PROTO_DEPENDENT_ATTRIBUTES =
- ImmutableList.of(
- new Attribute("$protobuf_lib", Mode.TARGET), new Attribute("deps", Mode.TARGET));
+ ImmutableList.of(new Attribute("deps", Mode.TARGET));
- private static final String PROTO_SOURCE_FILE_BLACKLIST_ATTR = "$j2objc_proto_blacklist";
-
- /** Flags passed to J2ObjC proto compiler plugin. */
- protected static final ImmutableList<String> J2OBJC_PLUGIN_PARAMS =
- ImmutableList.of("file_dir_mapping", "generate_class_mappings");
+ private static final String J2OBJC_PROTO_TOOLCHAIN_ATTR = ":j2objc_proto_toolchain";
private static final LabelLateBoundDefault<?> DEAD_CODE_REPORT =
LabelLateBoundDefault.fromTargetConfiguration(
@@ -113,17 +118,6 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF
null,
(rule, attributes, j2objcConfig) -> j2objcConfig.deadCodeReport());
- /** Adds additional attribute aspects and attributes to the given AspectDefinition.Builder. */
- protected AspectDefinition.Builder addAdditionalAttributes(AspectDefinition.Builder builder) {
- return builder.add(
- attr("$j2objc_plugin", LABEL)
- .cfg(HostTransition.INSTANCE)
- .exec()
- .value(
- Label.parseAbsoluteUnchecked(
- toolsRepository + "//third_party/java/j2objc:proto_plugin")));
- }
-
/** Returns whether this aspect should generate J2ObjC protos from this proto rule */
protected boolean shouldAttachToProtoRule(RuleContext ruleContext) {
return true;
@@ -136,7 +130,7 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF
@Override
public AspectDefinition getDefinition(AspectParameters aspectParameters) {
- return ConfigAwareAspectBuilder.of(addAdditionalAttributes(new AspectDefinition.Builder(this)))
+ return ConfigAwareAspectBuilder.of(new AspectDefinition.Builder(this))
.requiresHostConfigurationFragments(JavaConfiguration.class)
.originalBuilder()
.propagateAlongAttribute("deps")
@@ -188,11 +182,6 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF
Label.parseAbsoluteUnchecked(
toolsRepository + "//third_party/java/j2objc:jre_core_lib")))
.add(
- attr("$protobuf_lib", LABEL)
- .value(
- Label.parseAbsoluteUnchecked(
- toolsRepository + "//third_party/java/j2objc:proto_runtime")))
- .add(
attr("$xcrunwrapper", LABEL)
.cfg(HostTransition.INSTANCE)
.exec()
@@ -214,11 +203,11 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF
.exec()
.value(Label.parseAbsoluteUnchecked(toolsRepository + "//tools/zip:zipper")))
.add(
- ProtoSourceFileBlacklist.blacklistFilegroupAttribute(
- PROTO_SOURCE_FILE_BLACKLIST_ATTR,
- ImmutableList.of(
- Label.parseAbsoluteUnchecked(
- toolsRepository + "//tools/j2objc:j2objc_proto_blacklist"))))
+ attr(J2OBJC_PROTO_TOOLCHAIN_ATTR, LABEL)
+ .legacyAllowAnyFileType()
+ .value(
+ getProtoToolchainLabel(
+ toolsRepository + "//tools/j2objc:j2objc_proto_toolchain")))
.add(attr(":j2objc_cc_toolchain", LABEL).value(ObjcRuleClasses.APPLE_TOOLCHAIN))
.build();
}
@@ -245,7 +234,8 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF
AspectParameters parameters,
J2ObjcSource j2ObjcSource,
J2ObjcMappingFileProvider directJ2ObjcMappingFileProvider,
- Iterable<Attribute> depAttributes)
+ Iterable<Attribute> depAttributes,
+ List<TransitiveInfoCollection> otherDeps)
throws InterruptedException {
ConfiguredAspect.Builder builder = new ConfiguredAspect.Builder(this, parameters, ruleContext);
ObjcCommon common;
@@ -257,7 +247,8 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF
j2ObjcSource.getObjcSrcs(),
j2ObjcSource.getObjcHdrs(),
j2ObjcSource.getHeaderSearchPaths(),
- depAttributes);
+ depAttributes,
+ otherDeps);
try {
CcToolchainProvider ccToolchain =
@@ -295,7 +286,8 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF
ImmutableList.<Artifact>of(),
ImmutableList.<Artifact>of(),
ImmutableList.<PathFragment>of(),
- depAttributes);
+ depAttributes,
+ otherDeps);
}
return builder
@@ -350,7 +342,8 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF
parameters,
j2ObjcSource,
directJ2ObjcMappingFileProvider,
- JAVA_DEPENDENT_ATTRIBUTES);
+ JAVA_DEPENDENT_ATTRIBUTES,
+ ImmutableList.of());
}
private ConfiguredAspect proto(
@@ -359,13 +352,13 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF
ProtoSourcesProvider protoSourcesProvider = base.getProvider(ProtoSourcesProvider.class);
ImmutableList<Artifact> protoSources = protoSourcesProvider.getDirectProtoSources();
+ ProtoLangToolchainProvider protoToolchain =
+ ruleContext.getPrerequisite(
+ J2OBJC_PROTO_TOOLCHAIN_ATTR, TARGET, ProtoLangToolchainProvider.class);
// Avoid pulling in any generated files from blacklisted protos.
ProtoSourceFileBlacklist protoBlacklist =
- new ProtoSourceFileBlacklist(
- ruleContext,
- ruleContext
- .getPrerequisiteArtifacts(PROTO_SOURCE_FILE_BLACKLIST_ATTR, Mode.HOST)
- .list());
+ new ProtoSourceFileBlacklist(ruleContext, protoToolchain.blacklistedProtos().toList());
+
ImmutableList<Artifact> filteredProtoSources =
ImmutableList.copyOf(protoBlacklist.filter(protoSources));
J2ObjcSource j2ObjcSource = protoJ2ObjcSource(ruleContext, filteredProtoSources);
@@ -375,7 +368,8 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF
directJ2ObjcMappingFileProvider = new J2ObjcMappingFileProvider.Builder().build();
} else {
directJ2ObjcMappingFileProvider =
- createJ2ObjcProtoCompileActions(base, ruleContext, filteredProtoSources, j2ObjcSource);
+ createJ2ObjcProtoCompileActions(
+ base, protoToolchain, ruleContext, filteredProtoSources, j2ObjcSource);
}
return buildAspect(
@@ -384,7 +378,8 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF
parameters,
j2ObjcSource,
directJ2ObjcMappingFileProvider,
- PROTO_DEPENDENT_ATTRIBUTES);
+ PROTO_DEPENDENT_ATTRIBUTES,
+ ImmutableList.of(protoToolchain.runtime()));
}
private static J2ObjcMappingFileProvider exportedJ2ObjcMappingFileProvider(
@@ -613,6 +608,7 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF
private J2ObjcMappingFileProvider createJ2ObjcProtoCompileActions(
ConfiguredTarget base,
+ ProtoLangToolchainProvider protoToolchain,
RuleContext ruleContext,
Iterable<Artifact> filteredProtoSources,
J2ObjcSource j2ObjcSource) {
@@ -632,17 +628,24 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF
String genfilesPath = getProtoOutputRoot(ruleContext).getPathString();
- String langPluginParameter =
- String.format("%s:%s", Joiner.on(',').join(J2OBJC_PLUGIN_PARAMS), genfilesPath);
-
SupportData supportData = base.getProvider(ProtoSupportDataProvider.class).getSupportData();
- ProtoCompileActionBuilder actionBuilder =
- new ProtoCompileActionBuilder(ruleContext, supportData, "J2ObjC", "j2objc", outputs)
- .setLangPluginName("$j2objc_plugin")
- .setLangPluginParameter(langPluginParameter)
- .allowServices(shouldAllowProtoServices(ruleContext));
- ruleContext.registerAction(actionBuilder.build());
+ ImmutableList.Builder<ProtoCompileActionBuilder.ToolchainInvocation> invocations =
+ ImmutableList.builder();
+ invocations.add(
+ new ProtoCompileActionBuilder.ToolchainInvocation(
+ "j2objc", checkNotNull(protoToolchain), genfilesPath));
+ ProtoCompileActionBuilder.registerActions(
+ ruleContext,
+ invocations.build(),
+ supportData.getDirectProtoSources(),
+ supportData.getTransitiveImports(),
+ supportData.getProtosInDirectDeps(),
+ supportData.getTransitiveProtoPathFlags(),
+ ruleContext.getLabel(),
+ outputs,
+ "j2objc",
+ shouldAllowProtoServices(ruleContext));
return new J2ObjcMappingFileProvider(
NestedSetBuilder.<Artifact>stableOrder().addAll(outputHeaderMappingFiles).build(),
@@ -785,13 +788,15 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF
return objcSources.build();
}
- /**
- * Sets up and returns an {@link ObjcCommon} object containing the J2ObjC-translated code.
- *
- */
- static ObjcCommon common(RuleContext ruleContext, Iterable<Artifact> transpiledSources,
- Iterable<Artifact> transpiledHeaders, Iterable<PathFragment> headerSearchPaths,
- Iterable<Attribute> dependentAttributes) throws InterruptedException {
+ /** Sets up and returns an {@link ObjcCommon} object containing the J2ObjC-translated code. */
+ static ObjcCommon common(
+ RuleContext ruleContext,
+ Iterable<Artifact> transpiledSources,
+ Iterable<Artifact> transpiledHeaders,
+ Iterable<PathFragment> headerSearchPaths,
+ Iterable<Attribute> dependentAttributes,
+ List<TransitiveInfoCollection> otherObjcProviders)
+ throws InterruptedException {
ObjcCommon.Builder builder = new ObjcCommon.Builder(ruleContext);
IntermediateArtifacts intermediateArtifacts =
ObjcRuleClasses.j2objcIntermediateArtifacts(ruleContext);
@@ -819,6 +824,15 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF
}
}
+ List<ObjcProvider> newOtherDeps =
+ otherObjcProviders
+ .stream()
+ .map(d -> d.get(ObjcProvider.SKYLARK_CONSTRUCTOR))
+ .collect(Collectors.toList());
+ // We can't just use addDeps since that now takes ConfiguredTargetAndTargets and we only have
+ // TransitiveInfoCollections
+ builder.addDepObjcProviders(newOtherDeps);
+
return builder
.addIncludes(headerSearchPaths)
.setIntermediateArtifacts(intermediateArtifacts)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoConfiguration.java
index de26c36b95..c730a7b874 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoConfiguration.java
@@ -101,6 +101,17 @@ public class ProtoConfiguration extends Fragment {
public Label protoToolchainForJava;
@Option(
+ name = "proto_toolchain_for_j2objc",
+ defaultValue = "@bazel_tools//tools/j2objc:j2objc_proto_toolchain",
+ category = "flags",
+ converter = BuildConfiguration.EmptyToNullLabelConverter.class,
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.AFFECTS_OUTPUTS, OptionEffectTag.LOADING_AND_ANALYSIS},
+ help = "Label of proto_lang_toolchain() which describes how to compile j2objc protos"
+ )
+ public Label protoToolchainForJ2objc;
+
+ @Option(
name = "proto_toolchain_for_cc",
defaultValue = "@com_google_protobuf//:cc_toolchain",
converter = BuildConfiguration.EmptyToNullLabelConverter.class,
@@ -151,6 +162,7 @@ public class ProtoConfiguration extends Fragment {
host.experimentalProtoExtraActions = experimentalProtoExtraActions;
host.protoCompiler = protoCompiler;
host.protoToolchainForJava = protoToolchainForJava;
+ host.protoToolchainForJ2objc = protoToolchainForJ2objc;
host.protoToolchainForJavaLite = protoToolchainForJavaLite;
host.protoToolchainForCc = protoToolchainForCc;
host.strictProtoDeps = strictProtoDeps;
@@ -215,6 +227,10 @@ public class ProtoConfiguration extends Fragment {
return options.protoToolchainForJava;
}
+ public Label protoToolchainForJ2objc() {
+ return options.protoToolchainForJ2objc;
+ }
+
public Label protoToolchainForJavaLite() {
return options.protoToolchainForJavaLite;
}
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/MockJ2ObjcSupport.java b/src/test/java/com/google/devtools/build/lib/packages/util/MockJ2ObjcSupport.java
index 6c7d5a1a35..54bb248c9e 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/MockJ2ObjcSupport.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/MockJ2ObjcSupport.java
@@ -78,6 +78,14 @@ public final class MockJ2ObjcSupport {
"filegroup(",
" name = 'j2objc_header_map',",
" srcs = ['j2objc_header_map.py'])",
+ "proto_lang_toolchain(",
+ " name = 'j2objc_proto_toolchain',",
+ " blacklisted_protos = [':j2objc_proto_blacklist'],",
+ " command_line = '--PLUGIN_j2objc_out=file_dir_mapping,generate_class_mappings:$(OUT)',",
+ " visibility = ['//visibility:public'],",
+ " plugin = '//third_party/java/j2objc:proto_plugin',",
+ " runtime = '//third_party/java/j2objc:proto_runtime',",
+ ")",
"exports_files(['j2objc_deploy.jar'])",
"filegroup(",
" name = 'j2objc_proto_blacklist',",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java
index 2e96850a9b..d632a3c030 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java
@@ -917,6 +917,88 @@ public class BazelJ2ObjcLibraryTest extends J2ObjcLibraryTest {
}
@Test
+ public void testProtoToolchainForJ2ObjcFlag() throws Exception {
+ useConfiguration("--proto_toolchain_for_j2objc=//tools/j2objc:alt_j2objc_proto_toolchain");
+
+ scratch.file("tools/j2objc/proto_plugin_binary");
+ scratch.file("tools/j2objc/alt_proto_runtime.h");
+ scratch.file("tools/j2objc/alt_proto_runtime.m");
+ scratch.file("tools/j2objc/some_blacklisted_proto.proto");
+
+ scratch.overwriteFile(
+ "tools/j2objc/BUILD",
+ "package(default_visibility=['//visibility:public'])",
+ "exports_files(['j2objc_deploy.jar'])",
+ "filegroup(",
+ " name = 'j2objc_wrapper',",
+ " srcs = ['j2objc_wrapper.py'],",
+ ")",
+ "filegroup(",
+ " name = 'blacklisted_protos',",
+ " srcs = ['some_blacklisted_proto.proto'],",
+ ")",
+ "filegroup(",
+ " name = 'j2objc_header_map',",
+ " srcs = ['j2objc_header_map.py'],",
+ ")",
+ "proto_lang_toolchain(",
+ " name = 'alt_j2objc_proto_toolchain',",
+ " command_line = '--PLUGIN_j2objc_out=file_dir_mapping,generate_class_mappings:$(OUT)',",
+ " plugin = ':alt_proto_plugin',",
+ " runtime = ':alt_proto_runtime',",
+ " blacklisted_protos = [':blacklisted_protos'],",
+ ")",
+ j2ObjcCompatibleProtoLibrary(
+ " name = 'blacklisted_proto_library',",
+ " srcs = ['some_blacklisted_proto.proto'],"),
+ "objc_library(",
+ " name = 'alt_proto_runtime',",
+ " hdrs = ['alt_proto_runtime.h'],",
+ " srcs = ['alt_proto_runtime.m'],",
+ ")",
+ "filegroup(",
+ " name = 'alt_proto_plugin',",
+ " srcs = ['proto_plugin_binary']",
+ ")");
+
+ scratch.file("java/com/google/dummy/test/proto/test.java");
+ scratch.file("java/com/google/dummy/test/proto/test.proto");
+ scratch.file(
+ "java/com/google/dummy/test/proto/BUILD",
+ "package(default_visibility=['//visibility:public'])",
+ j2ObjcCompatibleProtoLibrary(
+ " name = 'test_proto',",
+ " srcs = ['test.proto'],",
+ " deps = ['//tools/j2objc:blacklisted_proto_library'],"),
+ "",
+ "java_library(",
+ " name = 'test',",
+ " srcs = ['test.java'],",
+ " deps = [':test_proto'])",
+ "",
+ "j2objc_library(",
+ " name = 'transpile',",
+ " deps = ['test'])");
+
+ ConfiguredTarget j2objcLibraryTarget =
+ getConfiguredTarget("//java/com/google/dummy/test/proto:transpile");
+ ObjcProvider provider = j2objcLibraryTarget.get(ObjcProvider.SKYLARK_CONSTRUCTOR);
+ assertThat(Artifact.toRootRelativePaths(provider.get(ObjcProvider.LIBRARY)))
+ .containsExactly(
+ TestConstants.TOOLS_REPOSITORY_PATH_PREFIX
+ + "third_party/java/j2objc/libjre_core_lib.a",
+ "tools/j2objc/libalt_proto_runtime.a",
+ "java/com/google/dummy/test/proto/libtest_j2objc.a",
+ "java/com/google/dummy/test/proto/libtest_proto_j2objc.a");
+ assertThat(Artifact.toRootRelativePaths(provider.get(ObjcProvider.HEADER)))
+ .containsExactly(
+ TestConstants.TOOLS_REPOSITORY_PATH_PREFIX + "third_party/java/j2objc/jre_core.h",
+ "tools/j2objc/alt_proto_runtime.h",
+ "java/com/google/dummy/test/proto/test.j2objc.pb.h",
+ "java/com/google/dummy/test/proto/_j2objc/test/java/com/google/dummy/test/proto/test.h");
+ }
+
+ @Test
public void testJ2ObjcDeadCodeRemovalActionWithOptFlag() throws Exception {
useConfiguration("--j2objc_dead_code_removal");
addSimpleJ2ObjcLibraryWithEntryClasses();
diff --git a/tools/j2objc/BUILD b/tools/j2objc/BUILD
index b531e1fd83..351653a63c 100644
--- a/tools/j2objc/BUILD
+++ b/tools/j2objc/BUILD
@@ -23,7 +23,11 @@ filegroup(
srcs = ["j2objc_header_map.py"],
)
-filegroup(
- name = "j2objc_proto_blacklist",
- srcs = ["dummy.proto"],
+proto_lang_toolchain(
+ name = "j2objc_proto_toolchain",
+ blacklisted_protos = [],
+ command_line = "--PLUGIN_j2objc_out=file_dir_mapping,generate_class_mappings:$(OUT)",
+ plugin = "//third_party/java/j2objc:proto_plugin",
+ runtime = "//third_party/java/j2objc:proto_runtime",
+ visibility = ["//visibility:public"],
)
diff --git a/tools/j2objc/dummy.proto b/tools/j2objc/dummy.proto
deleted file mode 100644
index 9d90b3dcdb..0000000000
--- a/tools/j2objc/dummy.proto
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2016 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.
-
-syntax = "proto2";
-
-package third_party.bazel.tools.j2objc;
-
-message Dummy {
- optional string dummy = 1;
-}