diff options
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibraryRule.java | 13 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCase.java | 4 |
2 files changed, 15 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibraryRule.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibraryRule.java index 95fb906933..e1878aa05c 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibraryRule.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibraryRule.java @@ -14,6 +14,7 @@ package com.google.devtools.build.lib.rules.objc; +import static com.google.devtools.build.lib.packages.Attribute.ComputedDefault; import static com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition.HOST; import static com.google.devtools.build.lib.packages.Attribute.attr; import static com.google.devtools.build.lib.packages.Type.BOOLEAN; @@ -23,8 +24,10 @@ import static com.google.devtools.build.lib.packages.Type.LABEL_LIST; import com.google.devtools.build.lib.analysis.BaseRuleClasses; import com.google.devtools.build.lib.analysis.RuleDefinition; import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment; +import com.google.devtools.build.lib.packages.AttributeMap; import com.google.devtools.build.lib.packages.RuleClass; import com.google.devtools.build.lib.packages.RuleClass.Builder; +import com.google.devtools.build.lib.packages.Type; /** * Rule definition for objc_proto_library. @@ -58,8 +61,14 @@ public class ObjcProtoLibraryRule implements RuleDefinition { <!-- #END_BLAZE_RULE.ATTRIBUTE -->*/ .add(attr(OUTPUT_CPP_ATTR, BOOLEAN).value(false)) .add(attr(LIBPROTOBUF_ATTR, LABEL).allowedRuleClasses("objc_library") - .value(env.getLabel( - "//external:objc_proto_lib"))) + .value(new ComputedDefault(OUTPUT_CPP_ATTR) { + @Override + public Object getDefault(AttributeMap rule) { + return rule.get(OUTPUT_CPP_ATTR, Type.BOOLEAN) + ? env.getLabel("//external:objc_proto_cpp_lib") + : env.getLabel("//external:objc_proto_lib"); + } + })) .add(attr("$xcodegen", LABEL).cfg(HOST).exec() .value(env.getLabel("//tools/objc:xcodegen"))) .build(); diff --git a/src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCase.java b/src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCase.java index 0eb4444a84..15d4c43f94 100644 --- a/src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCase.java @@ -79,6 +79,10 @@ public abstract class FoundationTestCase extends TestCase { "bind(", " name = 'objc_proto_lib',", " actual = '//objcproto:ProtocolBuffers_lib',", + ")", + "bind(", + " name = 'objc_proto_cpp_lib',", + " actual = '//objcproto:ProtocolBuffersCPP_lib',", ")"); copySkylarkFilesIfExist(); actionOutputBase = scratch.dir("/usr/local/google/_blaze_jrluser/FAKEMD5/action_out/"); |