diff options
4 files changed, 42 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java index f047b3f7b7..ad0fed4039 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java @@ -21,6 +21,7 @@ import static com.google.devtools.build.lib.rules.objc.ObjcProvider.HEADER; import static com.google.devtools.build.lib.rules.objc.ObjcProvider.IMPORTED_LIBRARY; import static com.google.devtools.build.lib.rules.objc.ObjcProvider.INCLUDE; import static com.google.devtools.build.lib.rules.objc.ObjcProvider.INCLUDE_SYSTEM; +import static com.google.devtools.build.lib.rules.objc.ObjcProvider.LINK_INPUTS; import static com.google.devtools.build.lib.rules.objc.ObjcProvider.STATIC_FRAMEWORK_FILE; import static java.util.Comparator.naturalOrder; @@ -336,6 +337,7 @@ public class CrosstoolCompilationSupport extends CompilationSupport { .addTransitiveActionInputs(objcProvider.get(IMPORTED_LIBRARY)) .addTransitiveActionInputs(objcProvider.get(STATIC_FRAMEWORK_FILE)) .addTransitiveActionInputs(objcProvider.get(DYNAMIC_FRAMEWORK_FILE)) + .addTransitiveActionInputs(objcProvider.get(LINK_INPUTS)) .setCrosstoolInputs(toolchain.getLink()) .addActionInputs(prunedJ2ObjcArchives) .addActionInputs(extraLinkInputs) diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinaryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinaryTest.java index d387743cc5..90f42a89f8 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinaryTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinaryTest.java @@ -861,6 +861,11 @@ public class AppleBinaryTest extends ObjcRuleTestCase { } @Test + public void testObjcProviderLinkInputsInLinkAction() throws Exception { + checkObjcProviderLinkInputsInLinkAction(RULE_TYPE); + } + + @Test public void testAppleSdkVersionEnv() throws Exception { checkAppleSdkVersionEnv(RULE_TYPE); } diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleDynamicLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleDynamicLibraryTest.java index 3feec504a3..f128dde240 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleDynamicLibraryTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleDynamicLibraryTest.java @@ -88,6 +88,12 @@ public class AppleDynamicLibraryTest extends ObjcRuleTestCase { } @Test + public void testObjcProviderLinkInputsInLinkAction() throws Exception { + checkObjcProviderLinkInputsInLinkAction(RULE_TYPE); + } + + + @Test public void testAppleSdkVersionEnv() throws Exception { checkAppleSdkVersionEnv(RULE_TYPE); } diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java index 794e8404d3..005c4ee927 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java @@ -4459,6 +4459,35 @@ public abstract class ObjcRuleTestCase extends BuildViewTestCase { .contains("-another-opt -Wl,--other-opt -one-more-opt"); } + protected void checkObjcProviderLinkInputsInLinkAction(RuleType ruleType) throws Exception { + useConfiguration("--experimental_disable_jvm", "--cpu=ios_i386"); + + scratch.file("bin/defs.bzl", + "def _custom_rule_impl(ctx):", + " return struct(objc=apple_common.new_objc_provider(", + " link_inputs=depset(ctx.files.link_inputs)))", + "custom_rule = rule(", + " _custom_rule_impl,", + " attrs={'link_inputs': attr.label_list(allow_files=True)},", + ")"); + + scratch.file("bin/input.txt"); + + scratch.file("bin/BUILD", + "load('//bin:defs.bzl', 'custom_rule')", + "custom_rule(", + " name = 'custom',", + " link_inputs = ['input.txt'],", + ")"); + + ruleType.scratchTarget(scratch, + "srcs", "['main.m']", + "deps", "['//bin:custom']"); + + Artifact inputFile = getSourceArtifact("bin/input.txt"); + assertThat(linkAction("//x").getInputs()).contains(inputFile); + } + protected void checkAppleSdkVersionEnv(RuleType ruleType) throws Exception { ruleType.scratchTarget(scratch); |