aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibraryRule.java13
-rw-r--r--src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCase.java4
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/");