diff options
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 |