[KGP] Introduce Incremental Compilation Feature Toggles

Makes it easier to introduce a Gradle property for configuring
IncrementalCompilerRunner.

^KT-64513 Fixed
^KT-63837 In Progress


Merge-request: KT-MR-13671
Merged-by: Evgenii Mazhukin <evgenii.mazhukin@jetbrains.com>
This commit is contained in:
Evgenii Mazhukin
2023-12-27 13:43:54 +00:00
committed by Space Team
parent 97f8f7a734
commit ee3119e9d2
19 changed files with 157 additions and 70 deletions
@@ -29,6 +29,7 @@ import org.jetbrains.kotlin.daemon.client.BasicCompilerServicesWithResultsFacade
import org.jetbrains.kotlin.daemon.common.CompilerId
import org.jetbrains.kotlin.daemon.common.configureDaemonJVMOptions
import org.jetbrains.kotlin.daemon.common.filterExtractProps
import org.jetbrains.kotlin.incremental.IncrementalCompilationFeatures
import org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner
import org.jetbrains.kotlin.incremental.classpathDiff.ClasspathEntrySnapshotter
import org.jetbrains.kotlin.incremental.extractKotlinSourcesFromFreeCompilerArguments
@@ -153,9 +154,7 @@ internal object CompilationServiceImpl : CompilationService {
outputDirs = options.outputDirs,
kotlinSourceFilesExtensions = kotlinFilenameExtensions,
classpathChanges = classpathChanges,
withAbiSnapshot = false,
preciseCompilationResultsBackup = options.preciseCompilationResultsBackupEnabled,
keepIncrementalCompilationCachesInMemory = options.incrementalCompilationCachesKeptInMemory
icFeatures = options.extractIncrementalCompilationFeatures(),
)
val rootProjectDir = options.rootProjectDir
val buildDir = options.buildDir
@@ -0,0 +1,25 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.buildtools.internal
import org.jetbrains.kotlin.buildtools.api.jvm.IncrementalJvmCompilationConfiguration
import org.jetbrains.kotlin.incremental.IncrementalCompilationFeatures
private typealias ICConfiguration = IncrementalJvmCompilationConfiguration<*>
/**
* IncrementalJvmCompilationConfiguration provides single-property API for forward-compatibility.
*
* configurationAdapters are there to regroup the properties and work with higher-level interfaces.
*/
internal fun ICConfiguration.extractIncrementalCompilationFeatures(): IncrementalCompilationFeatures {
return IncrementalCompilationFeatures(
withAbiSnapshot = false,
preciseCompilationResultsBackup = preciseCompilationResultsBackupEnabled,
keepIncrementalCompilationCachesInMemory = incrementalCompilationCachesKeptInMemory,
)
}
@@ -53,9 +53,7 @@ internal val JvmCompilationConfigurationImpl.asDaemonCompilationOptions: Compila
rootProjectDir = options.rootProjectDir,
buildDir = options.buildDir,
kotlinScriptExtensions = ktsExtensionsAsArray,
withAbiSnapshot = false,
preciseCompilationResultsBackup = options.preciseCompilationResultsBackupEnabled,
keepIncrementalCompilationCachesInMemory = options.incrementalCompilationCachesKeptInMemory,
icFeatures = options.extractIncrementalCompilationFeatures(),
)
}
else -> CompilationOptions(