diff options
author | 2016-08-16 17:14:27 +0000 | |
---|---|---|
committer | 2016-08-17 11:23:57 +0000 | |
commit | ed51d1ff055603b37e58a4dd92f524005373fef4 (patch) | |
tree | 59177d0ce775db2d2c38d23042bd8595cf4732f5 /src/main | |
parent | 4903012d368c8adf0270ba568c913109306689b2 (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.java | 15 |
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. */ |