aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibrary.java46
1 files changed, 33 insertions, 13 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibrary.java
index e2224a8378..0281538fbe 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibrary.java
@@ -15,7 +15,9 @@
package com.google.devtools.build.lib.rules.objc;
import static com.google.devtools.build.lib.collect.nestedset.Order.STABLE_ORDER;
+import static com.google.devtools.build.lib.rules.objc.XcodeProductType.LIBRARY_STATIC;
+import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
@@ -54,16 +56,25 @@ public class J2ObjcLibrary implements RuleConfiguredTargetFactory {
.addEntryClasses(ruleContext.attributes().get("entry_classes", Type.STRING_LIST))
.build();
- ObjcProvider.Builder objcProvider = new ObjcProvider.Builder()
- .addTransitiveAndPropagate(ruleContext.getPrerequisite(
- "$jre_emul_lib", Mode.TARGET, ObjcProvider.class))
- .addTransitiveAndPropagate(ruleContext.getPrerequisites(
- "deps", Mode.TARGET, ObjcProvider.class));
+ ObjcProvider.Builder objcProviderBuilder =
+ new ObjcProvider.Builder()
+ .addTransitiveAndPropagate(
+ ruleContext.getPrerequisite("$jre_emul_lib", Mode.TARGET, ObjcProvider.class))
+ .addTransitiveAndPropagate(
+ ruleContext.getPrerequisites("deps", Mode.TARGET, ObjcProvider.class));
+
+ XcodeProvider.Builder xcodeProviderBuilder = new XcodeProvider.Builder();
+ XcodeSupport xcodeSupport =
+ new XcodeSupport(ruleContext)
+ .addDependencies(xcodeProviderBuilder, new Attribute("$jre_emul_lib", Mode.TARGET))
+ .addDependencies(xcodeProviderBuilder, new Attribute("deps", Mode.TARGET));
if (j2ObjcSrcsProvider.hasProtos()) {
if (ruleContext.attributes().has("$protobuf_lib", Type.LABEL)) {
- objcProvider.addTransitiveAndPropagate(ruleContext.getPrerequisite(
- "$protobuf_lib", Mode.TARGET, ObjcProvider.class));
+ objcProviderBuilder.addTransitiveAndPropagate(
+ ruleContext.getPrerequisite("$protobuf_lib", Mode.TARGET, ObjcProvider.class));
+ xcodeSupport.addDependencies(
+ xcodeProviderBuilder, new Attribute("$protobuf_lib", Mode.TARGET));
} else {
// In theory no Bazel rule should ever provide protos, because they're not supported yet.
// If we reach here, it's a programming error, not a rule error.
@@ -74,20 +85,29 @@ public class J2ObjcLibrary implements RuleConfiguredTargetFactory {
}
for (J2ObjcSource j2objcSource : j2ObjcSrcsProvider.getSrcs()) {
- objcProvider.addAll(ObjcProvider.HEADER, j2objcSource.getObjcHdrs());
- objcProvider.add(ObjcProvider.INCLUDE, j2objcSource.getObjcFilePath());
- objcProvider.add(ObjcProvider.INCLUDE, new PathFragment(
- j2objcSource.getObjcFilePath(),
- ruleContext.getConfiguration().getGenfilesFragment()));
+ PathFragment genDirHeaderSearchPath =
+ new PathFragment(
+ j2objcSource.getObjcFilePath(), ruleContext.getConfiguration().getGenfilesFragment());
+
+ objcProviderBuilder.addAll(ObjcProvider.HEADER, j2objcSource.getObjcHdrs());
+ objcProviderBuilder.add(ObjcProvider.INCLUDE, j2objcSource.getObjcFilePath());
+ objcProviderBuilder.add(ObjcProvider.INCLUDE, genDirHeaderSearchPath);
+ xcodeProviderBuilder.addHeaders(j2objcSource.getObjcHdrs());
+ xcodeProviderBuilder.addUserHeaderSearchPaths(
+ ImmutableList.of(j2objcSource.getObjcFilePath(), genDirHeaderSearchPath));
}
+ ObjcProvider objcProvider = objcProviderBuilder.build();
+ xcodeSupport.addXcodeSettings(xcodeProviderBuilder, objcProvider, LIBRARY_STATIC);
+
return new RuleConfiguredTargetBuilder(ruleContext)
.setFilesToBuild(NestedSetBuilder.<Artifact>emptySet(STABLE_ORDER))
.add(RunfilesProvider.class, RunfilesProvider.EMPTY)
.addProvider(J2ObjcSrcsProvider.class, j2ObjcSrcsProvider)
.addProvider(
J2ObjcMappingFileProvider.class, ObjcRuleClasses.j2ObjcMappingFileProvider(ruleContext))
- .addProvider(ObjcProvider.class, objcProvider.build())
+ .addProvider(ObjcProvider.class, objcProvider)
+ .addProvider(XcodeProvider.class, xcodeProviderBuilder.build())
.build();
}