aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java
diff options
context:
space:
mode:
authorGravatar Peter Schmitt <schmitt@google.com>2015-05-13 23:25:45 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2015-05-15 09:44:44 +0000
commitb140749f869c4c963f9daffdda4927e3ca688939 (patch)
tree3f3369f0be727b2d990568fb87024e8c38a9dbde /src/main/java
parent39f3b66bfca31ef1198d4f80fce5b554fc7c637e (diff)
Simplify ConfiguredTarget construction.
This is part of a series of changes to reduce/remove ObjcCommon. In this case removing a method that added needless complexity. -- MOS_MIGRATED_REVID=93573019
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java25
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundle.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundleLibrary.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java79
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcFramework.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcImport.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java22
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingTargetFactory.java18
10 files changed, 74 insertions, 145 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java b/src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java
index e822a0f3fc..6bc5b5f18e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java
@@ -138,19 +138,20 @@ abstract class BinaryLinkingTargetFactory implements RuleConfiguredTargetFactory
XcodeProvider xcodeProvider = xcodeProviderBuilder.build();
xcodeSupport.registerActions(xcodeProvider);
- // TODO(bazel-team): Stop exporting an XcTestAppProvider once objc_binary no longer creates an
- // application bundle.
- RuleConfiguredTargetBuilder target = common.configuredTargetBuilder(
- filesToBuild.build(),
- Optional.of(xcodeProvider),
- Optional.of(objcProvider),
- xcTestAppProvider,
- Optional.<J2ObjcSrcsProvider>absent(),
- Optional.<J2ObjcMappingFileProvider>absent());
- for (RunfilesSupport runfilesSupport : maybeRunfilesSupport.asSet()) {
- target.setRunfilesSupport(runfilesSupport, runfilesSupport.getExecutable());
+ RuleConfiguredTargetBuilder targetBuilder =
+ ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build())
+ .addProvider(XcodeProvider.class, xcodeProvider)
+ .addProvider(ObjcProvider.class, objcProvider);
+ if (xcTestAppProvider.isPresent()) {
+ // TODO(bazel-team): Stop exporting an XcTestAppProvider once objc_binary no longer creates an
+ // application bundle.
+ targetBuilder.addProvider(XcTestAppProvider.class, xcTestAppProvider.get());
}
- return target.build();
+ if (maybeRunfilesSupport.isPresent()) {
+ RunfilesSupport runfilesSupport = maybeRunfilesSupport.get();
+ targetBuilder.setRunfilesSupport(runfilesSupport, runfilesSupport.getExecutable());
+ }
+ return targetBuilder.build();
}
private OptionsProvider optionsProvider(RuleContext ruleContext) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundle.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundle.java
index 7eb806c1a5..4a4d34d994 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundle.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundle.java
@@ -16,12 +16,12 @@ package com.google.devtools.build.lib.rules.objc;
import static com.google.devtools.build.lib.collect.nestedset.Order.STABLE_ORDER;
-import com.google.common.base.Optional;
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;
import com.google.devtools.build.lib.analysis.RuleContext;
+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.RuleConfiguredTargetFactory;
@@ -41,12 +41,9 @@ public class ObjcBundle implements RuleConfiguredTargetFactory {
ruleContext.attributeError("bundle_imports", error);
}
- return common.configuredTarget(
- /*filesToBuild=*/NestedSetBuilder.<Artifact>emptySet(STABLE_ORDER),
- Optional.<XcodeProvider>absent(),
- Optional.of(common.getObjcProvider()),
- Optional.<XcTestAppProvider>absent(),
- Optional.<J2ObjcSrcsProvider>absent(),
- Optional.<J2ObjcMappingFileProvider>absent());
+ NestedSet<Artifact> filesToBuild = NestedSetBuilder.emptySet(STABLE_ORDER);
+ return ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild)
+ .addProvider(ObjcProvider.class, common.getObjcProvider())
+ .build();
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundleLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundleLibrary.java
index e04c11f1a1..f32f320c20 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundleLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundleLibrary.java
@@ -17,7 +17,6 @@ package com.google.devtools.build.lib.rules.objc;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.NESTED_BUNDLE;
import static com.google.devtools.build.lib.rules.objc.XcodeProductType.BUNDLE;
-import com.google.common.base.Optional;
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;
@@ -61,13 +60,10 @@ public class ObjcBundleLibrary implements RuleConfiguredTargetFactory {
.add(NESTED_BUNDLE, bundling)
.build();
- return common.configuredTarget(
- filesToBuild.build(),
- Optional.of(xcodeProviderBuilder.build()),
- Optional.of(nestedBundleProvider),
- Optional.<XcTestAppProvider>absent(),
- Optional.<J2ObjcSrcsProvider>absent(),
- Optional.<J2ObjcMappingFileProvider>absent());
+ return ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build())
+ .addProvider(XcodeProvider.class, xcodeProviderBuilder.build())
+ .addProvider(ObjcProvider.class, nestedBundleProvider)
+ .build();
}
private OptionsProvider optionsProvider(RuleContext ruleContext) {
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 20806aff82..36f6ad56da 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
@@ -52,15 +52,9 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
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;
-import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
import com.google.devtools.build.lib.analysis.RuleContext;
-import com.google.devtools.build.lib.analysis.Runfiles;
-import com.google.devtools.build.lib.analysis.RunfilesProvider;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
-import com.google.devtools.build.lib.collect.nestedset.NestedSet;
-import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.packages.Type;
import com.google.devtools.build.lib.rules.cpp.CcCommon;
import com.google.devtools.build.lib.util.FileType;
@@ -432,7 +426,7 @@ public final class ObjcCommon {
objcProvider.addAll(LINKED_BINARY, linkedBinary.asSet())
.addAll(BREAKPAD_FILE, breakpadFile.asSet());
- return new ObjcCommon(context, objcProvider.build(), compilationArtifacts);
+ return new ObjcCommon(objcProvider.build(), compilationArtifacts);
}
}
@@ -442,16 +436,13 @@ public final class ObjcCommon {
static final FileType ASSET_CATALOG_CONTAINER_TYPE = FileType.of(".xcassets");
static final FileType FRAMEWORK_CONTAINER_TYPE = FileType.of(".framework");
- private final RuleContext context;
private final ObjcProvider objcProvider;
private final Optional<CompilationArtifacts> compilationArtifacts;
private ObjcCommon(
- RuleContext context,
ObjcProvider objcProvider,
Optional<CompilationArtifacts> compilationArtifacts) {
- this.context = Preconditions.checkNotNull(context);
this.objcProvider = Preconditions.checkNotNull(objcProvider);
this.compilationArtifacts = Preconditions.checkNotNull(compilationArtifacts);
}
@@ -574,72 +565,4 @@ public final class ObjcCommon {
}
return errors;
}
-
- /**
- * Returns a {@link RuleConfiguredTargetBuilder}.
- *
- * @param filesToBuild files to build for this target. These also become the data runfiles. Note
- * that this method may add more files to create the complete list of files to build for this
- * target.
- * @param maybeTargetProvider the provider for this target.
- * @param maybeExportedProvider the {@link ObjcProvider} for this target. This should generally be
- * present whenever {@code objc_} rules may depend on this target.
- * @param maybeJ2ObjcSrcsProvider the {@link J2ObjcSrcsProvider} for this target.
- */
- public RuleConfiguredTargetBuilder configuredTargetBuilder(NestedSet<Artifact> filesToBuild,
- Optional<XcodeProvider> maybeTargetProvider, Optional<ObjcProvider> maybeExportedProvider,
- Optional<XcTestAppProvider> maybeXcTestAppProvider,
- Optional<J2ObjcSrcsProvider> maybeJ2ObjcSrcsProvider,
- Optional<J2ObjcMappingFileProvider> maybeJ2ObjcMappingFileProvider) {
- NestedSet<Artifact> allFilesToBuild = NestedSetBuilder.<Artifact>stableOrder()
- .addTransitive(filesToBuild)
- .build();
-
- RunfilesProvider runfilesProvider = RunfilesProvider.withData(
- new Runfiles.Builder()
- .addRunfiles(context, RunfilesProvider.DEFAULT_RUNFILES)
- .build(),
- new Runfiles.Builder().addTransitiveArtifacts(allFilesToBuild).build());
-
- RuleConfiguredTargetBuilder target = new RuleConfiguredTargetBuilder(context)
- .setFilesToBuild(allFilesToBuild)
- .add(RunfilesProvider.class, runfilesProvider);
- for (ObjcProvider exportedProvider : maybeExportedProvider.asSet()) {
- target.addProvider(ObjcProvider.class, exportedProvider);
- }
- for (XcTestAppProvider xcTestAppProvider : maybeXcTestAppProvider.asSet()) {
- target.addProvider(XcTestAppProvider.class, xcTestAppProvider);
- }
- for (XcodeProvider targetProvider : maybeTargetProvider.asSet()) {
- target.addProvider(XcodeProvider.class, targetProvider);
- }
- for (J2ObjcSrcsProvider j2ObjcSrcsProvider : maybeJ2ObjcSrcsProvider.asSet()) {
- target.addProvider(J2ObjcSrcsProvider.class, j2ObjcSrcsProvider);
- }
- for (J2ObjcMappingFileProvider j2ObjcMappingFileProvider
- : maybeJ2ObjcMappingFileProvider.asSet()) {
- target.addProvider(J2ObjcMappingFileProvider.class, j2ObjcMappingFileProvider);
- }
- return target;
- }
-
- /**
- * Creates a {@link ConfiguredTarget}.
- *
- * @param filesToBuild files to build for this target. These also become the data runfiles. Note
- * that this method may add more files to create the complete list of files to build for this
- * target.
- * @param maybeTargetProvider the provider for this target.
- * @param maybeExportedProvider the {@link ObjcProvider} for this target. This should generally be
- * present whenever {@code objc_} rules may depend on this target.
- * @param maybeJ2ObjcSrcsProvider the {@link J2ObjcSrcsProvider} for this target.
- */
- public ConfiguredTarget configuredTarget(NestedSet<Artifact> filesToBuild,
- Optional<XcodeProvider> maybeTargetProvider, Optional<ObjcProvider> maybeExportedProvider,
- Optional<XcTestAppProvider> maybeXcTestAppProvider,
- Optional<J2ObjcSrcsProvider> maybeJ2ObjcSrcsProvider,
- Optional<J2ObjcMappingFileProvider> maybeJ2ObjcMappingFileProvider) {
- return configuredTargetBuilder(filesToBuild, maybeTargetProvider, maybeExportedProvider,
- maybeXcTestAppProvider, maybeJ2ObjcSrcsProvider, maybeJ2ObjcMappingFileProvider).build();
- }
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcFramework.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcFramework.java
index 5e670f6dd5..13c2d5476b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcFramework.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcFramework.java
@@ -16,12 +16,12 @@ package com.google.devtools.build.lib.rules.objc;
import static com.google.devtools.build.lib.collect.nestedset.Order.STABLE_ORDER;
-import com.google.common.base.Optional;
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;
import com.google.devtools.build.lib.analysis.RuleContext;
+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.RuleConfiguredTargetFactory;
import com.google.devtools.build.lib.rules.objc.ObjcSdkFrameworks.Attributes;
@@ -50,12 +50,9 @@ public class ObjcFramework implements RuleConfiguredTargetFactory {
ruleContext.attributeError("framework_imports", error);
}
- return common.configuredTarget(
- NestedSetBuilder.<Artifact>emptySet(STABLE_ORDER) /* filesToBuild */,
- Optional.<XcodeProvider>absent(),
- Optional.of(common.getObjcProvider()),
- Optional.<XcTestAppProvider>absent(),
- Optional.<J2ObjcSrcsProvider>absent(),
- Optional.<J2ObjcMappingFileProvider>absent());
+ NestedSet<Artifact> filesToBuild = NestedSetBuilder.emptySet(STABLE_ORDER);
+ return ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild)
+ .addProvider(ObjcProvider.class, common.getObjcProvider())
+ .build();
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcImport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcImport.java
index dc80de46d5..7c21400fe4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcImport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcImport.java
@@ -16,7 +16,6 @@ package com.google.devtools.build.lib.rules.objc;
import static com.google.devtools.build.lib.rules.objc.XcodeProductType.LIBRARY_STATIC;
-import com.google.common.base.Optional;
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;
@@ -61,12 +60,9 @@ public class ObjcImport implements RuleConfiguredTargetFactory {
.registerActions(xcodeProviderBuilder.build())
.addFilesToBuild(filesToBuild);
- return common.configuredTarget(
- filesToBuild.build(),
- Optional.of(xcodeProviderBuilder.build()),
- Optional.of(common.getObjcProvider()),
- Optional.<XcTestAppProvider>absent(),
- Optional.<J2ObjcSrcsProvider>absent(),
- Optional.<J2ObjcMappingFileProvider>absent());
+ return ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build())
+ .addProvider(XcodeProvider.class, xcodeProviderBuilder.build())
+ .addProvider(ObjcProvider.class, common.getObjcProvider())
+ .build();
}
}
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 28c9314d55..61e2ba4c98 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
@@ -106,13 +106,13 @@ public class ObjcLibrary implements RuleConfiguredTargetFactory {
xcodeProviderBuilder, new Attribute("non_propagated_deps", Mode.TARGET))
.registerActions(xcodeProviderBuilder.build());
- return common.configuredTarget(
- filesToBuild.build(),
- Optional.of(xcodeProviderBuilder.build()),
- Optional.of(common.getObjcProvider()),
- Optional.<XcTestAppProvider>absent(),
- Optional.of(ObjcRuleClasses.j2ObjcSrcsProvider(ruleContext)),
- Optional.of(ObjcRuleClasses.j2ObjcMappingFileProvider(ruleContext)));
+ return ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build())
+ .addProvider(XcodeProvider.class, xcodeProviderBuilder.build())
+ .addProvider(ObjcProvider.class, common.getObjcProvider())
+ .addProvider(J2ObjcSrcsProvider.class, ObjcRuleClasses.j2ObjcSrcsProvider(ruleContext))
+ .addProvider(
+ J2ObjcMappingFileProvider.class, ObjcRuleClasses.j2ObjcMappingFileProvider(ruleContext))
+ .build();
}
private OptionsProvider optionsProvider(RuleContext ruleContext) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java
index ab58fd0d34..b6c9113dda 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java
@@ -200,13 +200,10 @@ public class ObjcProtoLibrary implements RuleConfiguredTargetFactory {
xcodeProviderBuilder, new Attribute(ObjcProtoLibraryRule.LIBPROTOBUF_ATTR, Mode.TARGET))
.registerActions(xcodeProviderBuilder.build());
- return common.configuredTarget(
- filesToBuild.build(),
- Optional.of(xcodeProviderBuilder.build()),
- Optional.of(common.getObjcProvider()),
- Optional.<XcTestAppProvider>absent(),
- Optional.<J2ObjcSrcsProvider>absent(),
- Optional.<J2ObjcMappingFileProvider>absent());
+ return ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build())
+ .addProvider(XcodeProvider.class, xcodeProviderBuilder.build())
+ .addProvider(ObjcProvider.class, common.getObjcProvider())
+ .build();
}
private NestedSet<Artifact> maybeGetProtoSources(RuleContext ruleContext) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
index df14de212e..4844892d1e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
@@ -30,11 +30,15 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
+import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.RuleDefinition;
import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
+import com.google.devtools.build.lib.analysis.Runfiles;
+import com.google.devtools.build.lib.analysis.RunfilesProvider;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.Attribute.LateBoundLabel;
@@ -237,6 +241,24 @@ public class ObjcRuleClasses {
}
/**
+ * Creates a new configured target builder with the given {@code filesToBuild}, which are also
+ * used as runfiles.
+ *
+ * @param ruleContext the current rule context
+ * @param filesToBuild files to build for this target. These also become the data runfiles
+ */
+ static RuleConfiguredTargetBuilder ruleConfiguredTarget(RuleContext ruleContext,
+ NestedSet<Artifact> filesToBuild) {
+ RunfilesProvider runfilesProvider = RunfilesProvider.withData(
+ new Runfiles.Builder().addRunfiles(ruleContext, RunfilesProvider.DEFAULT_RUNFILES).build(),
+ new Runfiles.Builder().addTransitiveArtifacts(filesToBuild).build());
+
+ return new RuleConfiguredTargetBuilder(ruleContext)
+ .setFilesToBuild(filesToBuild)
+ .add(RunfilesProvider.class, runfilesProvider);
+ }
+
+ /**
* Attributes for {@code objc_*} rules that have compiler options.
*/
public static class CoptsRule implements RuleDefinition {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingTargetFactory.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingTargetFactory.java
index b3e27c1363..72469a91d2 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingTargetFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingTargetFactory.java
@@ -103,15 +103,15 @@ public abstract class ReleaseBundlingTargetFactory implements RuleConfiguredTarg
exposedObjcProvider = Optional.absent();
}
- RuleConfiguredTargetBuilder target = common.configuredTargetBuilder(
- filesToBuild.build(),
- Optional.of(xcodeProviderBuilder.build()),
- exposedObjcProvider,
- Optional.of(releaseBundlingSupport.xcTestAppProvider()),
- Optional.<J2ObjcSrcsProvider>absent(),
- Optional.<J2ObjcMappingFileProvider>absent());
- configureTarget(target, ruleContext, releaseBundlingSupport);
- return target.build();
+ RuleConfiguredTargetBuilder targetBuilder =
+ ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build())
+ .addProvider(XcTestAppProvider.class, releaseBundlingSupport.xcTestAppProvider())
+ .addProvider(XcodeProvider.class, xcodeProviderBuilder.build());
+ if (exposedObjcProvider.isPresent()) {
+ targetBuilder.addProvider(ObjcProvider.class, exposedObjcProvider.get());
+ }
+ configureTarget(targetBuilder, ruleContext, releaseBundlingSupport);
+ return targetBuilder.build();
}
/**