aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
diff options
context:
space:
mode:
authorGravatar Cal Peyser <cpeyser@google.com>2016-09-27 21:10:44 +0000
committerGravatar Yun Peng <pcloudy@google.com>2016-09-28 08:28:05 +0000
commitae3b6a93cd342d900e93a47efb9bbf0f1cd227f2 (patch)
treef51bc64abf594b253a9cc6144f9bea419819aa34 /src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
parentc5545fd0896f3c602a9be0986debed6f0c9c662d (diff)
Implement input pruning using .d files in objc behind a flag that defaults to
false. -- MOS_MIGRATED_REVID=134452391
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java49
1 files changed, 27 insertions, 22 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 7faa6a516d..77faa716d2 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
@@ -83,6 +83,7 @@ import com.google.devtools.build.lib.rules.apple.AppleConfiguration;
import com.google.devtools.build.lib.rules.apple.AppleToolchain;
import com.google.devtools.build.lib.rules.apple.Platform;
import com.google.devtools.build.lib.rules.apple.Platform.PlatformType;
+import com.google.devtools.build.lib.rules.cpp.CppCompileAction.DotdFile;
import com.google.devtools.build.lib.rules.cpp.CppModuleMap;
import com.google.devtools.build.lib.rules.cpp.CppModuleMapAction;
import com.google.devtools.build.lib.rules.objc.XcodeProvider.Builder;
@@ -655,19 +656,21 @@ public final class CompilationSupport {
boolean runCodeCoverage =
buildConfiguration.isCodeCoverageEnabled() && ObjcRuleClasses.isInstrumentable(sourceFile);
boolean hasSwiftSources = compilationArtifacts.hasSwiftSources();
+ DotdFile dotdFile = intermediateArtifacts.dotdFile(sourceFile);
- CustomCommandLine commandLine = compileActionCommandLine(
- sourceFile,
- objFile,
- objcProvider,
- priorityHeaders,
- moduleMap,
- compilationArtifacts.getPchFile(),
- Optional.of(intermediateArtifacts.dotdFile(sourceFile)),
- otherFlags,
- runCodeCoverage,
- isCPlusPlusSource,
- hasSwiftSources);
+ CustomCommandLine commandLine =
+ compileActionCommandLine(
+ sourceFile,
+ objFile,
+ objcProvider,
+ priorityHeaders,
+ moduleMap,
+ compilationArtifacts.getPchFile(),
+ Optional.of(dotdFile.artifact()),
+ otherFlags,
+ runCodeCoverage,
+ isCPlusPlusSource,
+ hasSwiftSources);
Optional<Artifact> gcnoFile = Optional.absent();
if (runCodeCoverage && !buildConfiguration.isLLVMCoverageMapFormatEnabled()) {
@@ -684,24 +687,26 @@ public final class CompilationSupport {
moduleMapInputs = objcProvider.get(MODULE_MAP);
}
- // TODO(bazel-team): Remote private headers from inputs once they're added to the provider.
+ // TODO(bazel-team): Remove private headers from inputs once they're added to the provider.
ruleContext.registerAction(
- ObjcRuleClasses.spawnAppleEnvActionBuilder(
+ ObjcCompileAction.Builder.createObjcCompileActionBuilderWithAppleEnv(
appleConfiguration, appleConfiguration.getSingleArchPlatform())
+ .setDotdPruningPlan(objcConfiguration.getDotdPruningPlan())
+ .setSourceFile(sourceFile)
+ .addMandatoryInputs(swiftHeader.asSet())
+ .addTransitiveMandatoryInputs(moduleMapInputs)
+ .addTransitiveMandatoryInputs(objcProvider.get(STATIC_FRAMEWORK_FILE))
+ .addTransitiveMandatoryInputs(objcProvider.get(DYNAMIC_FRAMEWORK_FILE))
+ .setDotdFile(dotdFile)
+ .addInputs(compilationArtifacts.getPrivateHdrs())
+ .addInputs(compilationArtifacts.getPchFile().asSet())
.setMnemonic("ObjcCompile")
.setExecutable(xcrunwrapper(ruleContext))
.setCommandLine(commandLine)
- .addInput(sourceFile)
- .addInputs(swiftHeader.asSet())
- .addTransitiveInputs(moduleMapInputs)
.addOutput(objFile)
.addOutputs(gcnoFile.asSet())
- .addOutput(intermediateArtifacts.dotdFile(sourceFile))
+ .addOutput(dotdFile.artifact())
.addTransitiveInputs(objcProvider.get(HEADER))
- .addInputs(compilationArtifacts.getPrivateHdrs())
- .addTransitiveInputs(objcProvider.get(STATIC_FRAMEWORK_FILE))
- .addTransitiveInputs(objcProvider.get(DYNAMIC_FRAMEWORK_FILE))
- .addInputs(compilationArtifacts.getPchFile().asSet())
.build(ruleContext));
}