aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
authorGravatar Chris Parsons <cparsons@google.com>2016-04-19 21:38:35 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-04-20 11:17:10 +0000
commit9b35d8a81b0d5cb92a22e7d9c7bf30a834711d7f (patch)
tree914756f930a4c41f91ee8bfe04507af0d85d67f6 /src/main
parent44daf782269f039367adef7828494af047a198be (diff)
Refactor CompilationSupport and IntermediateArtifacts to optionally take a BuildConfiguration that is not the current rule context's configuration.
-- MOS_MIGRATED_REVID=120271518
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java100
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java20
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java18
3 files changed, 86 insertions, 52 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
index 7661970157..8fe7df3365 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
@@ -68,6 +68,7 @@ import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
import com.google.devtools.build.lib.analysis.actions.FileWriteAction;
import com.google.devtools.build.lib.analysis.actions.ParameterFileWriteAction;
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.collect.nestedset.Order;
@@ -219,16 +220,32 @@ public final class CompilationSupport {
}
private final RuleContext ruleContext;
+ private final BuildConfiguration buildConfiguration;
+ private final ObjcConfiguration objcConfiguration;
+ private final AppleConfiguration appleConfiguration;
private final CompilationAttributes attributes;
private final IntermediateArtifacts intermediateArtifacts;
/**
- * Creates a new compilation support for the given rule.
+ * Creates a new compilation support for the given rule. All actions will be created under
+ * the given build configuration, which may be different than the current rule context
+ * configuration.
*/
- public CompilationSupport(RuleContext ruleContext) {
+ public CompilationSupport(RuleContext ruleContext, BuildConfiguration buildConfiguration) {
this.ruleContext = ruleContext;
+ this.buildConfiguration = buildConfiguration;
+ this.objcConfiguration = buildConfiguration.getFragment(ObjcConfiguration.class);
+ this.appleConfiguration = buildConfiguration.getFragment(AppleConfiguration.class);
this.attributes = new CompilationAttributes(ruleContext);
- this.intermediateArtifacts = ObjcRuleClasses.intermediateArtifacts(ruleContext);
+ this.intermediateArtifacts =
+ ObjcRuleClasses.intermediateArtifacts(ruleContext, buildConfiguration);
+ }
+
+ /**
+ * Creates a new compilation support for the given rule.
+ */
+ public CompilationSupport(RuleContext ruleContext) {
+ this(ruleContext, ruleContext.getConfiguration());
}
/**
@@ -242,7 +259,7 @@ public final class CompilationSupport {
if (common.getCompilationArtifacts().isPresent()) {
registerGenerateModuleMapAction(common.getCompilationArtifacts());
Optional<CppModuleMap> moduleMap;
- if (ObjcRuleClasses.objcConfiguration(ruleContext).moduleMapsEnabled()) {
+ if (objcConfiguration.moduleMapsEnabled()) {
moduleMap = Optional.of(intermediateArtifacts.moduleMap());
} else {
moduleMap = Optional.absent();
@@ -251,7 +268,7 @@ public final class CompilationSupport {
common.getCompilationArtifacts().get(),
common.getObjcProvider(),
moduleMap,
- ruleContext.getConfiguration().isCodeCoverageEnabled(),
+ buildConfiguration.isCodeCoverageEnabled(),
true);
}
return this;
@@ -316,7 +333,7 @@ public final class CompilationSupport {
* Adds a source file to a command line, honoring the useAbsolutePathForActions flag.
*/
private CustomCommandLine.Builder addSource(CustomCommandLine.Builder commandLine,
- ObjcConfiguration objcConfiguration, Artifact sourceFile) {
+ Artifact sourceFile) {
PathFragment sourceExecPathFragment = sourceFile.getExecPath();
String sourcePath = sourceExecPathFragment.getPathString();
if (!sourceExecPathFragment.isAbsolute() && objcConfiguration.getUseAbsolutePathsForActions()) {
@@ -327,9 +344,9 @@ public final class CompilationSupport {
}
private CustomCommandLine.Builder addSource(String argName, CustomCommandLine.Builder commandLine,
- ObjcConfiguration objcConfiguration, Artifact sourceFile) {
+ Artifact sourceFile) {
commandLine.add(argName);
- return addSource(commandLine, objcConfiguration, sourceFile);
+ return addSource(commandLine, sourceFile);
}
private void registerCompileAction(
@@ -340,8 +357,6 @@ public final class CompilationSupport {
CompilationArtifacts compilationArtifacts,
Iterable<String> otherFlags,
boolean isCodeCoverageEnabled) {
- ObjcConfiguration objcConfiguration = ObjcRuleClasses.objcConfiguration(ruleContext);
- AppleConfiguration appleConfiguration = ruleContext.getFragment(AppleConfiguration.class);
ImmutableList.Builder<String> coverageFlags = new ImmutableList.Builder<>();
ImmutableList.Builder<Artifact> gcnoFiles = new ImmutableList.Builder<>();
ImmutableList.Builder<Artifact> additionalInputs = new ImmutableList.Builder<>();
@@ -374,7 +389,7 @@ public final class CompilationSupport {
.add(commonLinkAndCompileFlagsForClang(objcProvider, objcConfiguration, appleConfiguration))
.add(objcConfiguration.getCoptsForCompilationMode())
.addBeforeEachPath(
- "-iquote", ObjcCommon.userHeaderSearchPaths(ruleContext.getConfiguration()))
+ "-iquote", ObjcCommon.userHeaderSearchPaths(buildConfiguration))
.addBeforeEachExecPath("-include", compilationArtifacts.getPchFile().asSet())
.addBeforeEachPath("-I", objcProvider.get(INCLUDE))
.addBeforeEachPath("-isystem", objcProvider.get(INCLUDE_SYSTEM))
@@ -415,7 +430,8 @@ public final class CompilationSupport {
}
// TODO(bazel-team): Remote private headers from inputs once they're added to the provider.
- ruleContext.registerAction(ObjcRuleClasses.spawnAppleEnvActionBuilder(ruleContext)
+ ruleContext.registerAction(ObjcRuleClasses.spawnAppleEnvActionBuilder(
+ ruleContext, appleConfiguration.getIosCpuPlatform())
.setMnemonic("ObjcCompile")
.setExecutable(xcrunwrapper(ruleContext))
.setCommandLine(commandLine.build())
@@ -437,7 +453,6 @@ public final class CompilationSupport {
* of the rule's "copts" attribute as well as the current configuration copts).
*/
private Iterable<String> getCompileRuleCopts() {
- ObjcConfiguration objcConfiguration = ObjcRuleClasses.objcConfiguration(ruleContext);
List<String> copts = Lists.newArrayList(
Iterables.concat(objcConfiguration.getCopts(), attributes.copts()));
@@ -459,7 +474,7 @@ public final class CompilationSupport {
// Unfortunately, this cache contains non-hermetic information, thus we avoid declaring it as
// an implicit output (as outputs must be hermetic).
String cachePath =
- ruleContext.getConfiguration().getGenfilesFragment() + "/" + OBJC_MODULE_CACHE_DIR_NAME;
+ buildConfiguration.getGenfilesFragment() + "/" + OBJC_MODULE_CACHE_DIR_NAME;
copts.add("-fmodules-cache-path=" + cachePath);
}
return copts;
@@ -476,8 +491,6 @@ public final class CompilationSupport {
Artifact sourceFile,
Artifact objFile,
ObjcProvider objcProvider) {
- ObjcConfiguration objcConfiguration = ObjcRuleClasses.objcConfiguration(ruleContext);
- AppleConfiguration appleConfiguration = ruleContext.getFragment(AppleConfiguration.class);
// Compiling a single swift file requires knowledge of all of the other
// swift files in the same module. The primary file ({@code sourceFile}) is
@@ -508,7 +521,7 @@ public final class CompilationSupport {
.add("-Onone")
.add("-module-name").add(getModuleName())
.add("-parse-as-library");
- addSource("-primary-file", commandLine, objcConfiguration, sourceFile)
+ addSource("-primary-file", commandLine, sourceFile)
.addExecPaths(otherSwiftSources)
.addExecPath("-o", objFile)
.addExecPath("-emit-module-path", intermediateArtifacts.swiftModuleFile(sourceFile))
@@ -546,7 +559,8 @@ public final class CompilationSupport {
commandLine.add(commonFrameworkFlags(objcProvider, appleConfiguration));
ruleContext.registerAction(
- ObjcRuleClasses.spawnAppleEnvActionBuilder(ruleContext)
+ ObjcRuleClasses.spawnAppleEnvActionBuilder(
+ ruleContext, appleConfiguration.getIosCpuPlatform())
.setMnemonic("SwiftCompile")
.setExecutable(xcrunwrapper(ruleContext))
.setCommandLine(commandLine.build())
@@ -567,9 +581,6 @@ public final class CompilationSupport {
private void registerSwiftModuleMergeAction(
CompilationArtifacts compilationArtifacts,
ObjcProvider objcProvider) {
- ObjcConfiguration objcConfiguration = ObjcRuleClasses.objcConfiguration(ruleContext);
- AppleConfiguration appleConfiguration = ruleContext.getFragment(AppleConfiguration.class);
-
ImmutableList.Builder<Artifact> moduleFiles = new ImmutableList.Builder<>();
for (Artifact src : compilationArtifacts.getSrcs()) {
if (ObjcRuleClasses.SWIFT_SOURCES.matches(src.getFilename())) {
@@ -617,7 +628,8 @@ public final class CompilationSupport {
commandLine.add(commonFrameworkFlags(objcProvider, appleConfiguration));
- ruleContext.registerAction(ObjcRuleClasses.spawnAppleEnvActionBuilder(ruleContext)
+ ruleContext.registerAction(ObjcRuleClasses.spawnAppleEnvActionBuilder(
+ ruleContext, appleConfiguration.getIosCpuPlatform())
.setMnemonic("SwiftModuleMerge")
.setExecutable(xcrunwrapper(ruleContext))
.setCommandLine(commandLine.build())
@@ -630,9 +642,8 @@ public final class CompilationSupport {
}
private void registerArchiveActions(ImmutableList.Builder<Artifact> objFiles, Artifact archive) {
- for (Action action : archiveActions(ruleContext, objFiles.build(), archive,
- ruleContext.getFragment(AppleConfiguration.class),
- intermediateArtifacts.objList())) {
+ for (Action action :
+ archiveActions(ruleContext, objFiles.build(), archive, intermediateArtifacts.objList())) {
ruleContext.registerAction(action);
}
}
@@ -641,7 +652,6 @@ public final class CompilationSupport {
ActionConstructionContext context,
Iterable<Artifact> objFiles,
Artifact archive,
- AppleConfiguration appleConfiguration,
Artifact objList) {
ImmutableList.Builder<Action> actions = new ImmutableList.Builder<>();
@@ -652,7 +662,8 @@ public final class CompilationSupport {
Artifact.joinExecPaths("\n", objFiles),
/*makeExecutable=*/ false));
- actions.add(ObjcRuleClasses.spawnAppleEnvActionBuilder(ruleContext)
+ actions.add(ObjcRuleClasses.spawnAppleEnvActionBuilder(
+ ruleContext, appleConfiguration.getIosCpuPlatform())
.setMnemonic("ObjcLink")
.setExecutable(xcrunwrapper(ruleContext))
.setCommandLine(new CustomCommandLine.Builder()
@@ -672,11 +683,11 @@ public final class CompilationSupport {
}
private void registerFullyLinkAction(ObjcProvider objcProvider) throws InterruptedException {
- AppleConfiguration appleConfiguration = ruleContext.getFragment(AppleConfiguration.class);
Artifact archive = ruleContext.getImplicitOutputArtifact(FULLY_LINKED_LIB);
ImmutableList<Artifact> ccLibraries = ccLibraries(objcProvider);
- ruleContext.registerAction(ObjcRuleClasses.spawnAppleEnvActionBuilder(ruleContext)
+ ruleContext.registerAction(ObjcRuleClasses.spawnAppleEnvActionBuilder(
+ ruleContext, appleConfiguration.getIosCpuPlatform())
.setMnemonic("ObjcLink")
.setExecutable(xcrunwrapper(ruleContext))
.setCommandLine(new CustomCommandLine.Builder()
@@ -746,7 +757,7 @@ public final class CompilationSupport {
DsymOutputType dsymOutputType) {
Optional<Artifact> dsymBundleZip;
Optional<Artifact> linkmap;
- if (ObjcRuleClasses.objcConfiguration(ruleContext).generateDebugSymbols()) {
+ if (objcConfiguration.generateDebugSymbols()) {
registerDsymActions(dsymOutputType);
dsymBundleZip = Optional.of(intermediateArtifacts.tempDsymBundleZip(dsymOutputType));
} else {
@@ -760,7 +771,7 @@ public final class CompilationSupport {
prunedJ2ObjcArchives = j2objcPrunedLibraries(objcProvider);
}
- if (ObjcRuleClasses.objcConfiguration(ruleContext).generateLinkmap()) {
+ if (objcConfiguration.generateLinkmap()) {
linkmap = Optional.of(intermediateArtifacts.linkmap());
} else {
linkmap = Optional.absent();
@@ -778,7 +789,8 @@ public final class CompilationSupport {
private boolean stripJ2ObjcDeadCode() {
J2ObjcEntryClassProvider provider = J2ObjcEntryClassProvider.buildFrom(ruleContext);
- J2ObjcConfiguration j2objcConfiguration = ruleContext.getFragment(J2ObjcConfiguration.class);
+ J2ObjcConfiguration j2objcConfiguration =
+ buildConfiguration.getFragment(J2ObjcConfiguration.class);
// Only perform J2ObjC dead code stripping if flag --j2objc_dead_code_removal is specified and
// users have specified entry classes.
return j2objcConfiguration.removeDeadCode() && !provider.getEntryClasses().isEmpty();
@@ -790,7 +802,7 @@ public final class CompilationSupport {
*/
CompilationSupport registerGenerateModuleMapAction(
Optional<CompilationArtifacts> compilationArtifacts) {
- if (ObjcRuleClasses.objcConfiguration(ruleContext).moduleMapsEnabled()) {
+ if (objcConfiguration.moduleMapsEnabled()) {
// TODO(bazel-team): Include textual headers in the module map when Xcode 6 support is
// dropped.
Iterable<Artifact> publicHeaders = attributes.hdrs();
@@ -845,8 +857,6 @@ public final class CompilationSupport {
Optional<Artifact> dsymBundleZip,
Iterable<Artifact> prunedJ2ObjcArchives,
Optional<Artifact> linkmap) {
- ObjcConfiguration objcConfiguration = ObjcRuleClasses.objcConfiguration(ruleContext);
-
// When compilation_mode=opt and objc_enable_binary_stripping are specified, the unstripped
// binary containing debug symbols is generated by the linker, which also needs the debug
// symbols for dead-code removal. The binary is also used to generate dSYM bundle if
@@ -870,7 +880,8 @@ public final class CompilationSupport {
bazelBuiltLibraries,
linkmap);
ruleContext.registerAction(
- ObjcRuleClasses.spawnAppleEnvActionBuilder(ruleContext)
+ ObjcRuleClasses.spawnAppleEnvActionBuilder(
+ ruleContext, appleConfiguration.getIosCpuPlatform())
.setMnemonic("ObjcLink")
.setShellCommand(ImmutableList.of("/bin/bash", "-c"))
.setCommandLine(new SingleArgCommandLine(commandLine))
@@ -902,7 +913,8 @@ public final class CompilationSupport {
Artifact strippedBinary = intermediateArtifacts.strippedSingleArchitectureBinary();
ruleContext.registerAction(
- ObjcRuleClasses.spawnAppleEnvActionBuilder(ruleContext)
+ ObjcRuleClasses.spawnAppleEnvActionBuilder(
+ ruleContext, appleConfiguration.getIosCpuPlatform())
.setMnemonic("ObjcBinarySymbolStrip")
.setExecutable(xcrunwrapper(ruleContext))
.setCommandLine(symbolStripCommandLine(stripArgs, binaryToLink, strippedBinary))
@@ -966,8 +978,6 @@ public final class CompilationSupport {
Iterable<Artifact> ccLibraries,
Iterable<Artifact> bazelBuiltLibraries,
Optional<Artifact> linkmap) {
- ObjcConfiguration objcConfiguration = ObjcRuleClasses.objcConfiguration(ruleContext);
- AppleConfiguration appleConfiguration = ruleContext.getFragment(AppleConfiguration.class);
Iterable<String> libraryNames = libraryNames(objcProvider);
CustomCommandLine.Builder commandLine = CustomCommandLine.builder()
@@ -1019,7 +1029,7 @@ public final class CompilationSupport {
.add(extraLinkArgs)
.add(objcProvider.get(ObjcProvider.LINKOPT));
- if (ruleContext.getConfiguration().isCodeCoverageEnabled()) {
+ if (buildConfiguration.isCodeCoverageEnabled()) {
commandLine.add(LINKER_COVERAGE_FLAGS);
}
@@ -1155,7 +1165,8 @@ public final class CompilationSupport {
paramFile,
commandLine,
ParameterFile.ParameterFileType.UNQUOTED, ISO_8859_1));
- ruleContext.registerAction(ObjcRuleClasses.spawnAppleEnvActionBuilder(ruleContext)
+ ruleContext.registerAction(ObjcRuleClasses.spawnAppleEnvActionBuilder(
+ ruleContext, appleConfiguration.getIosCpuPlatform())
.setMnemonic("DummyPruner")
.setExecutable(pruner)
.addInput(dummyArchive)
@@ -1181,7 +1192,6 @@ public final class CompilationSupport {
* @return this compilation support
*/
CompilationSupport addXcodeSettings(Builder xcodeProviderBuilder, ObjcCommon common) {
- ObjcConfiguration objcConfiguration = ObjcRuleClasses.objcConfiguration(ruleContext);
for (CompilationArtifacts artifacts : common.getCompilationArtifacts().asSet()) {
xcodeProviderBuilder.setCompilationArtifacts(artifacts);
}
@@ -1205,7 +1215,7 @@ public final class CompilationSupport {
xcodeProviderBuilder
.addHeaders(attributes.hdrs())
.addHeaders(attributes.textualHdrs())
- .addUserHeaderSearchPaths(ObjcCommon.userHeaderSearchPaths(ruleContext.getConfiguration()))
+ .addUserHeaderSearchPaths(ObjcCommon.userHeaderSearchPaths(buildConfiguration))
.addHeaderSearchPaths("$(WORKSPACE_ROOT)", attributes.headerSearchPaths())
.addHeaderSearchPaths("$(WORKSPACE_ROOT)", includeSystemPaths)
.addHeaderSearchPaths("$(SDKROOT)/usr/include", attributes.sdkIncludes())
@@ -1255,8 +1265,6 @@ public final class CompilationSupport {
}
private CompilationSupport registerDsymActions(DsymOutputType dsymOutputType) {
- ObjcConfiguration objcConfiguration = ObjcRuleClasses.objcConfiguration(ruleContext);
-
Artifact tempDsymBundleZip = intermediateArtifacts.tempDsymBundleZip(dsymOutputType);
Artifact linkedBinary =
objcConfiguration.shouldStripBinary()
@@ -1327,7 +1335,7 @@ public final class CompilationSupport {
private String getModuleName() {
// If we have module maps support, we need to use the generated module name, this way
// clang can properly load objc part of the module via -import-underlying-module command.
- if (ObjcRuleClasses.objcConfiguration(ruleContext).moduleMapsEnabled()) {
+ if (objcConfiguration.moduleMapsEnabled()) {
return intermediateArtifacts.moduleMap().getName();
}
// Otherwise, just use target name, it doesn't matter.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java
index 9da81f83c4..b86f124d87 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java
@@ -18,6 +18,7 @@ import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.Root;
import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.analysis.RuleContext;
+import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.rules.cpp.CppModuleMap;
import com.google.devtools.build.lib.util.Preconditions;
@@ -41,16 +42,23 @@ public final class IntermediateArtifacts {
static final String DSYM_ZIP_EXTENSION = ".temp.zip";
private final RuleContext ruleContext;
+ private final BuildConfiguration buildConfiguration;
private final String archiveFileNameSuffix;
private final String outputPrefix;
+ IntermediateArtifacts(RuleContext ruleContext, String archiveFileNameSuffix,
+ String outputPrefix) {
+ this(ruleContext, archiveFileNameSuffix, outputPrefix, ruleContext.getConfiguration());
+ }
+
IntermediateArtifacts(RuleContext ruleContext, String archiveFileNameSuffix) {
- this(ruleContext, archiveFileNameSuffix, "");
+ this(ruleContext, archiveFileNameSuffix, "", ruleContext.getConfiguration());
}
IntermediateArtifacts(RuleContext ruleContext, String archiveFileNameSuffix,
- String outputPrefix) {
+ String outputPrefix, BuildConfiguration buildConfiguration) {
this.ruleContext = ruleContext;
+ this.buildConfiguration = buildConfiguration;
this.archiveFileNameSuffix = Preconditions.checkNotNull(archiveFileNameSuffix);
this.outputPrefix = Preconditions.checkNotNull(outputPrefix);
}
@@ -67,7 +75,7 @@ public final class IntermediateArtifacts {
ruleContext.getDerivedArtifact(
entitlementsDirectory.replaceName(
addOutputPrefix(entitlementsDirectory.getBaseName(), extension)),
- ruleContext.getConfiguration().getBinDirectory());
+ buildConfiguration.getBinDirectory());
return artifact;
}
@@ -180,8 +188,8 @@ public final class IntermediateArtifacts {
private Artifact scopedArtifact(PathFragment scopeRelative, boolean inGenfiles) {
Root root =
inGenfiles
- ? ruleContext.getConfiguration().getGenfilesDirectory()
- : ruleContext.getConfiguration().getBinDirectory();
+ ? buildConfiguration.getGenfilesDirectory()
+ : buildConfiguration.getBinDirectory();
// The path of this artifact will be RULE_PACKAGE/SCOPERELATIVE
return ruleContext.getPackageRelativeArtifact(scopeRelative, root);
@@ -385,7 +393,7 @@ public final class IntermediateArtifacts {
* {@link CppModuleMap} that provides the clang module map for this target.
*/
public CppModuleMap moduleMap() {
- if (!ObjcRuleClasses.objcConfiguration(ruleContext).moduleMapsEnabled()) {
+ if (!buildConfiguration.getFragment(ObjcConfiguration.class).moduleMapsEnabled()) {
throw new IllegalStateException();
}
String moduleName =
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 cb33acb6ec..3b7d8c0f29 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
@@ -74,6 +74,22 @@ public class ObjcRuleClasses {
throw new UnsupportedOperationException("static-only");
}
+ /**
+ * Creates and returns an {@link IntermediateArtifacts} object, using the given rule context
+ * for fetching current-rule attributes, and using the given build configuration to determine
+ * the appropriate output directory in which to root artifacts.
+ */
+ public static IntermediateArtifacts intermediateArtifacts(RuleContext ruleContext,
+ BuildConfiguration buildConfiguration) {
+ return new IntermediateArtifacts(ruleContext, /*archiveFileNameSuffix*/ "",
+ /*outputPrefix*/ "", buildConfiguration);
+ }
+
+ /**
+ * Creates and returns an {@link IntermediateArtifacts} object, using the given rule context
+ * for fetching current-rule attributes and the current rule's configuration for determining the
+ * appropriate output output directory in which to root artifacts.
+ */
public static IntermediateArtifacts intermediateArtifacts(RuleContext ruleContext) {
return new IntermediateArtifacts(ruleContext, /*archiveFileNameSuffix=*/ "");
}
@@ -195,6 +211,8 @@ public class ObjcRuleClasses {
* order to run, require both a darwin architecture and a collection of environment variables
* which contain information about the target and host architectures.
*/
+ // TODO(cparsons): Refactor this method to take the configuration fragment instead of
+ // retrieving it from the rule context.
static SpawnAction.Builder spawnAppleEnvActionBuilder(RuleContext ruleContext,
Platform targetPlatform) {
AppleConfiguration appleConfiguration = ruleContext.getFragment(AppleConfiguration.class);