aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
authorGravatar Cal Peyser <cpeyser@google.com>2016-08-16 17:14:27 +0000
committerGravatar Philipp Wollermann <philwo@google.com>2016-08-17 11:23:57 +0000
commited51d1ff055603b37e58a4dd92f524005373fef4 (patch)
tree59177d0ce775db2d2c38d23042bd8595cf4732f5 /src/main
parent4903012d368c8adf0270ba568c913109306689b2 (diff)
Add a more robust test for cc_library deps that is not confused by an
experimental_objc_library, which may export cc providers. -- MOS_MIGRATED_REVID=130415669
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java15
1 files changed, 11 insertions, 4 deletions
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 d762411ae3..028054c4d2 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
@@ -62,6 +62,7 @@ import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.common.collect.UnmodifiableIterator;
import com.google.devtools.build.lib.actions.Artifact;
+import com.google.devtools.build.lib.analysis.AbstractConfiguredTarget;
import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
@@ -72,7 +73,6 @@ import com.google.devtools.build.lib.rules.cpp.CcLinkParams;
import com.google.devtools.build.lib.rules.cpp.CcLinkParamsProvider;
import com.google.devtools.build.lib.rules.cpp.CppCompilationContext;
import com.google.devtools.build.lib.rules.cpp.CppModuleMap;
-import com.google.devtools.build.lib.rules.cpp.CppRunfilesProvider;
import com.google.devtools.build.lib.rules.cpp.LinkerInputs;
import com.google.devtools.build.lib.syntax.Type;
import com.google.devtools.build.lib.util.FileType;
@@ -251,9 +251,7 @@ public final class ObjcCommon {
for (TransitiveInfoCollection dep : deps) {
addAnyProviders(propagatedObjcDeps, dep, ObjcProvider.class);
addAnyProviders(cppDeps, dep, CppCompilationContext.class);
- // Hack to determine if dep is a cc target. Required so objc_library archives packed in
- // CcLinkParamsProvider do not get consumed as cc targets.
- if (dep.getProvider(CppRunfilesProvider.class) != null) {
+ if (isCcLibrary(dep)) {
cppDepLinkParams.add(dep.getProvider(CcLinkParamsProvider.class));
}
}
@@ -579,6 +577,15 @@ public final class ObjcCommon {
return new ObjcCommon(objcProvider.build(), compilationArtifacts);
}
+ private static boolean isCcLibrary(TransitiveInfoCollection info) {
+ try {
+ AbstractConfiguredTarget target = (AbstractConfiguredTarget) info;
+ return target.getTarget().getTargetKind().equals("cc_library rule");
+ } catch (Exception e) {
+ return false;
+ }
+ }
+
/**
* Returns {@code true} if the given rule context has a launch storyboard set.
*/