aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar cpeyser <cpeyser@google.com>2018-02-12 06:41:54 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-12 06:44:02 -0800
commitdb61b316458685344d3aa4b6a784f09001a90892 (patch)
tree0a3bdca0bcda9df1a2282de3c51e042aeb6d79d0 /src
parenta92cde101f774c7731fbf16abc099dad311b5216 (diff)
Changes cc_library to consume headers specified in the "hdrs" attribute of an
objc_library that it depends on. See https://github.com/bazelbuild/bazel/issues/3352 PiperOrigin-RevId: 185371993
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java7
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java12
3 files changed, 20 insertions, 1 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 ea55f9adbc..5c9292969e 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
@@ -90,7 +90,7 @@ import java.util.Set;
public final class ObjcCommon {
/** Filters fileset artifacts out of a group of artifacts. */
- public static Iterable<Artifact> filterFileset(Iterable<Artifact> artifacts) {
+ public static ImmutableList<Artifact> filterFileset(Iterable<Artifact> artifacts) {
ImmutableList.Builder<Artifact> inputs = ImmutableList.<Artifact>builder();
for (Artifact artifact : artifacts) {
if (!artifact.isFileset()) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java
index 7ad60f0c46..7785f22ee1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java
@@ -23,6 +23,7 @@ import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.rules.cpp.CcLinkParamsInfo;
+import com.google.devtools.build.lib.rules.cpp.CppCompilationContext;
import com.google.devtools.build.lib.rules.objc.ObjcCommon.ResourceAttributes;
import com.google.devtools.build.lib.syntax.Type;
import java.util.Map;
@@ -87,9 +88,15 @@ public class ObjcLibrary implements RuleConfiguredTargetFactory {
J2ObjcEntryClassProvider j2ObjcEntryClassProvider = new J2ObjcEntryClassProvider.Builder()
.addTransitive(ruleContext.getPrerequisites("deps", Mode.TARGET,
J2ObjcEntryClassProvider.class)).build();
+ CppCompilationContext cppCompilationContext =
+ new CppCompilationContext.Builder(ruleContext)
+ .addDeclaredIncludeSrcs(CompilationAttributes.Builder
+ .fromRuleContext(ruleContext).build().hdrs().toCollection())
+ .build();
return ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build())
.addNativeDeclaredProvider(common.getObjcProvider())
+ .addProvider(CppCompilationContext.class, cppCompilationContext)
.addProvider(J2ObjcEntryClassProvider.class, j2ObjcEntryClassProvider)
.addProvider(J2ObjcMappingFileProvider.class, j2ObjcMappingFileProvider)
.addProvider(
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java
index b477492ed4..ec3dea8d41 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java
@@ -1971,4 +1971,16 @@ public class ObjcLibraryTest extends ObjcRuleTestCase {
public void testObjcSourcesFeatureObjcPlusPlus() throws Exception {
assertThat(containsObjcFeature("c.mm")).isTrue();
}
+
+ @Test
+ public void testHeaderPassedToCcLib() throws Exception {
+ createLibraryTargetWriter("//objc:lib").setList("hdrs", "objc_hdr.h").write();
+ ScratchAttributeWriter.fromLabelString(this, "cc_library", "//cc:lib")
+ .setList("srcs", "a.cc")
+ .setList("deps", "//objc:lib")
+ .write();
+ CommandAction compileAction = compileAction("//cc:lib", "a.o");
+ assertThat(Artifact.toRootRelativePaths(compileAction.getPossibleInputsForTesting()))
+ .contains("objc/objc_hdr.h");
+ }
}