aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Cal Peyser <cpeyser@google.com>2016-03-22 14:46:54 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-03-23 12:18:19 +0000
commitf64b375244fe9aaf1783b215c4220755ba769462 (patch)
treef763af6f7348fe6ab2fdd7384b9483c2cd54b9eb /src
parentdc0fbb42ab22ab8f3205b0884069e1ffe03677c9 (diff)
Introduce the linkopts attribute to the objc family of rules.
-- MOS_MIGRATED_REVID=117821922
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java4
3 files changed, 16 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
index e01f8e97af..dee283496d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
@@ -964,6 +964,10 @@ public final class CompilationSupport {
.add("-Xlinker").add("@executable_path/Frameworks");
}
+ for (String linkopt : attributes.linkopts()) {
+ commandLine.add("-Wl," + linkopt);
+ }
+
// Call to dsymutil for debug symbol generation must happen in the link action.
// All debug symbol information is encoded in object files inside archive files. To generate
// the debug symbol bundle, dsymutil will look inside the linked binary for the encoded
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
index 67c6ccbaff..c4252c9df9 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
@@ -195,13 +195,18 @@ public final class ObjcCommon {
* attribute does not exist or no values are specified.
*/
public Iterable<String> copts() {
- if (!ruleContext.attributes().has("copts", Type.STRING_LIST)) {
- return ImmutableList.of();
- }
return ruleContext.getTokenizedStringListAttr("copts");
}
/**
+ * Returns any values specified in this rule's {@code linkopts} attribute or an empty list if
+ * the attribute does not exist or no values are specified.
+ */
+ public Iterable<String> linkopts() {
+ return ruleContext.getTokenizedStringListAttr("linkopts");
+ }
+
+ /**
* The clang module maps of direct dependencies of this rule. These are needed to generate
* this rule's module map.
*/
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
index 4ffe5589a5..84f83867c4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
@@ -686,6 +686,10 @@ public class ObjcRuleClasses {
.singleArtifact()
.value(env.getToolsLabel("//tools/objc:j2objc_dead_code_pruner")))
.add(attr("$dummy_lib", LABEL).value(env.getToolsLabel("//tools/objc:dummy_lib")))
+ /* <!-- #BLAZE_RULE($objc_linking_rule).ATTRIBUTE(linkopts) -->
+ Extra flags to pass to the linker.
+ <!-- #END_BLAZE_RULE.ATTRIBUTE -->*/
+ .add(attr("linkopts", STRING_LIST))
.build();
}
@Override