diff options
-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. */ |