// TODO: move to precompile() after params are refactored
if (!options.shouldSaveSource()) {
precompilation.removeSourceArtifacts(branch);
}
Event compilePermutationsEvent =
SpeedTracerLogger.start(CompilerEventType.COMPILE_PERMUTATIONS);
Permutation[] allPerms = precompilation.getPermutations();
List<PersistenceBackedObject<PermutationResult>> resultFiles =
CompilePerms.makeResultFiles(
options.getCompilerWorkDir(moduleName), allPerms, options);
CompilePerms.compile(branch, compilerContext, precompilation, allPerms,
options.getLocalWorkers(), resultFiles);
compilePermutationsEvent.end();
ArtifactSet generatedArtifacts = precompilation.getGeneratedArtifacts();
PrecompileTaskOptions precompileOptions = precompilation.getUnifiedAst().getOptions();
precompilation = null; // No longer needed, so save the memory
long afterCompileMs = System.currentTimeMillis();
double compileSeconds = (afterCompileMs - beforeCompileMs) / 1000d;
branch.log(TreeLogger.INFO,
String.format("Compilation succeeded -- %.3fs", compileSeconds));
long beforeLinkMs = System.currentTimeMillis();
Event linkEvent = SpeedTracerLogger.start(CompilerEventType.LINK);
File absPath = new File(options.getWarDir(), module.getName());
absPath = absPath.getAbsoluteFile();
String logMessage = "Linking into " + absPath;
if (options.getExtraDir() != null) {
File absExtrasPath = new File(options.getExtraDir(),
module.getName());
absExtrasPath = absExtrasPath.getAbsoluteFile();
logMessage += "; Writing extras to " + absExtrasPath;
}
Link.link(logger.branch(TreeLogger.TRACE, logMessage), module,
module.getPublicResourceOracle(), generatedArtifacts, allPerms, resultFiles,
Sets.<PermutationResult>newHashSet(), precompileOptions, options);
linkEvent.end();
long afterLinkMs = System.currentTimeMillis();
double linkSeconds = (afterLinkMs - beforeLinkMs) / 1000d;
branch.log(TreeLogger.INFO, String.format("Linking succeeded -- %.3fs", linkSeconds));
}
}