Implement module detection for Gradle IC with Android

#KT-22431 fixed
This commit is contained in:
Alexey Tsvetkov
2018-05-17 05:34:07 +03:00
parent e5cdc64f4f
commit 53266300d4
9 changed files with 110 additions and 51 deletions
@@ -65,7 +65,7 @@ class IncrementalCompilationOptions(
* Directories that should be cleared when IC decides to rebuild
*/
val localStateDirs: List<File>,
val buildHistoryFile: File,
val multiModuleICSettings: MultiModuleICSettings,
val modulesInfo: IncrementalModuleInfo
) : CompilationOptions(compilerMode, targetPlatform, reportCategories, reportSeverity, requestedCompilationResults) {
companion object {
@@ -81,13 +81,22 @@ class IncrementalCompilationOptions(
"workingDir=$workingDir, " +
"customCacheVersionFileName='$customCacheVersionFileName', " +
"customCacheVersion=$customCacheVersion, " +
"buildHistoryFile=$buildHistoryFile, " +
"multiModuleICSettings=$multiModuleICSettings, " +
"usePreciseJavaTracking=$usePreciseJavaTracking" +
"localStateDirs=$localStateDirs" +
")"
}
}
data class MultiModuleICSettings(
val buildHistoryFile: File,
val useModuleDetection: Boolean
) : Serializable {
companion object {
const val serialVersionUID: Long = 0
}
}
enum class CompilerMode : Serializable {
NON_INCREMENTAL_COMPILER,
INCREMENTAL_COMPILER,
@@ -48,6 +48,7 @@ import org.jetbrains.kotlin.daemon.report.RemoteICReporter
import org.jetbrains.kotlin.incremental.*
import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.incremental.parsing.classesFqNames
import org.jetbrains.kotlin.incremental.multiproject.ModulesApiHistoryAndroid
import org.jetbrains.kotlin.incremental.multiproject.ModulesApiHistoryJvm
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents
import org.jetbrains.kotlin.modules.Module
@@ -523,14 +524,20 @@ class CompileServiceImpl(
workingDir,
enabled = true)
val modulesApiHistory = ModulesApiHistoryJvm(incrementalCompilationOptions.modulesInfo)
val modulesApiHistory = incrementalCompilationOptions.run {
if (!multiModuleICSettings.useModuleDetection) {
ModulesApiHistoryJvm(modulesInfo)
} else {
ModulesApiHistoryAndroid(modulesInfo)
}
}
val compiler = IncrementalJvmCompilerRunner(
workingDir,
javaSourceRoots,
versions,
reporter, annotationFileUpdater,
buildHistoryFile = incrementalCompilationOptions.buildHistoryFile,
buildHistoryFile = incrementalCompilationOptions.multiModuleICSettings.buildHistoryFile,
localStateDirs = incrementalCompilationOptions.localStateDirs,
usePreciseJavaTracking = incrementalCompilationOptions.usePreciseJavaTracking,
modulesApiHistory = modulesApiHistory