[Gradle] Add GradleBuildToolsApiCompilerRunner
It could be enabled via the `kotlin.compiler.runViaBuildToolsApi` Gradle property globally or the `AbstractKotlinCompileTool.runViaBuildToolsApi` task property for a particular task #KT-57397 In Progress
This commit is contained in:
committed by
Space Team
parent
9127919e01
commit
3b69a4c770
@@ -65,6 +65,7 @@ dependencies {
|
|||||||
commonImplementation(project(":kotlin-util-klib"))
|
commonImplementation(project(":kotlin-util-klib"))
|
||||||
commonImplementation(project(":native:kotlin-klib-commonizer-api"))
|
commonImplementation(project(":native:kotlin-klib-commonizer-api"))
|
||||||
commonImplementation(project(":kotlin-project-model"))
|
commonImplementation(project(":kotlin-project-model"))
|
||||||
|
commonImplementation(project(":compiler:build-tools:build-tools-api"))
|
||||||
|
|
||||||
commonRuntimeOnly(project(":kotlin-compiler-embeddable"))
|
commonRuntimeOnly(project(":kotlin-compiler-embeddable"))
|
||||||
commonRuntimeOnly(project(":kotlin-annotation-processing-embeddable"))
|
commonRuntimeOnly(project(":kotlin-annotation-processing-embeddable"))
|
||||||
|
|||||||
+29
@@ -12,12 +12,14 @@ import org.gradle.api.tasks.bundling.AbstractArchiveTask
|
|||||||
import org.gradle.api.tasks.bundling.Zip
|
import org.gradle.api.tasks.bundling.Zip
|
||||||
import org.gradle.jvm.tasks.Jar
|
import org.gradle.jvm.tasks.Jar
|
||||||
import org.gradle.workers.WorkQueue
|
import org.gradle.workers.WorkQueue
|
||||||
|
import org.gradle.workers.WorkerExecutor
|
||||||
import org.jetbrains.kotlin.build.report.metrics.BuildMetricsReporter
|
import org.jetbrains.kotlin.build.report.metrics.BuildMetricsReporter
|
||||||
import org.jetbrains.kotlin.build.report.metrics.BuildPerformanceMetric
|
import org.jetbrains.kotlin.build.report.metrics.BuildPerformanceMetric
|
||||||
import org.jetbrains.kotlin.build.report.metrics.BuildTime
|
import org.jetbrains.kotlin.build.report.metrics.BuildTime
|
||||||
import org.jetbrains.kotlin.build.report.metrics.measure
|
import org.jetbrains.kotlin.build.report.metrics.measure
|
||||||
import org.jetbrains.kotlin.cli.common.arguments.*
|
import org.jetbrains.kotlin.cli.common.arguments.*
|
||||||
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
||||||
|
import org.jetbrains.kotlin.compilerRunner.btapi.GradleBuildToolsApiCompilerRunner
|
||||||
import org.jetbrains.kotlin.daemon.client.CompileServiceSession
|
import org.jetbrains.kotlin.daemon.client.CompileServiceSession
|
||||||
import org.jetbrains.kotlin.daemon.common.CompilerId
|
import org.jetbrains.kotlin.daemon.common.CompilerId
|
||||||
import org.jetbrains.kotlin.daemon.common.configureDaemonJVMOptions
|
import org.jetbrains.kotlin.daemon.common.configureDaemonJVMOptions
|
||||||
@@ -52,6 +54,33 @@ const val EXISTING_SESSION_FILE_PREFIX = "Existing session-is-alive flag file: "
|
|||||||
const val DELETED_SESSION_FILE_PREFIX = "Deleted session-is-alive flag file: "
|
const val DELETED_SESSION_FILE_PREFIX = "Deleted session-is-alive flag file: "
|
||||||
const val COULD_NOT_CONNECT_TO_DAEMON_MESSAGE = "Could not connect to Kotlin compile daemon"
|
const val COULD_NOT_CONNECT_TO_DAEMON_MESSAGE = "Could not connect to Kotlin compile daemon"
|
||||||
|
|
||||||
|
internal fun createGradleCompilerRunner(
|
||||||
|
taskProvider: GradleCompileTaskProvider,
|
||||||
|
toolsJar: File?,
|
||||||
|
compilerExecutionSettings: CompilerExecutionSettings,
|
||||||
|
buildMetricsReporter: BuildMetricsReporter,
|
||||||
|
workerExecutor: WorkerExecutor,
|
||||||
|
runViaBuildToolsApi: Boolean
|
||||||
|
): GradleCompilerRunner {
|
||||||
|
return if (runViaBuildToolsApi) {
|
||||||
|
GradleBuildToolsApiCompilerRunner(
|
||||||
|
taskProvider,
|
||||||
|
toolsJar,
|
||||||
|
compilerExecutionSettings,
|
||||||
|
buildMetricsReporter,
|
||||||
|
workerExecutor,
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
GradleCompilerRunnerWithWorkers(
|
||||||
|
taskProvider,
|
||||||
|
toolsJar,
|
||||||
|
compilerExecutionSettings,
|
||||||
|
buildMetricsReporter,
|
||||||
|
workerExecutor,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Using real taskProvider cause "field 'taskProvider' from type 'org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner':
|
Using real taskProvider cause "field 'taskProvider' from type 'org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner':
|
||||||
value 'fixed(class org.jetbrains.kotlin.gradle.tasks.KotlinCompile_Decorated, task ':compileKotlin')'
|
value 'fixed(class org.jetbrains.kotlin.gradle.tasks.KotlinCompile_Decorated, task ':compileKotlin')'
|
||||||
|
|||||||
+32
@@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* 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.compilerRunner.btapi
|
||||||
|
|
||||||
|
import org.gradle.api.file.DirectoryProperty
|
||||||
|
import org.gradle.api.provider.ListProperty
|
||||||
|
import org.gradle.api.provider.Property
|
||||||
|
import org.gradle.workers.WorkAction
|
||||||
|
import org.gradle.workers.WorkParameters
|
||||||
|
import org.jetbrains.kotlin.build.report.metrics.BuildMetricsReporter
|
||||||
|
import org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWorkArguments
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
internal abstract class BuildToolsApiCompilationWork : WorkAction<BuildToolsApiCompilationWork.BuildToolsApiCompilationParameters> {
|
||||||
|
internal interface BuildToolsApiCompilationParameters : WorkParameters {
|
||||||
|
val compilerWorkArguments: Property<GradleKotlinCompilerWorkArguments>
|
||||||
|
val taskOutputsToRestore: ListProperty<File>
|
||||||
|
val snapshotsDir: DirectoryProperty
|
||||||
|
val buildDir: DirectoryProperty
|
||||||
|
val metricsReporter: Property<BuildMetricsReporter>
|
||||||
|
}
|
||||||
|
|
||||||
|
private val workArguments
|
||||||
|
get() = parameters.compilerWorkArguments.get()
|
||||||
|
|
||||||
|
override fun execute() {
|
||||||
|
println("I'm simulating compilation, the compilation classpath would be ${workArguments.compilerFullClasspath}")
|
||||||
|
}
|
||||||
|
}
|
||||||
+44
@@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* 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.compilerRunner.btapi
|
||||||
|
|
||||||
|
import org.gradle.workers.WorkQueue
|
||||||
|
import org.gradle.workers.WorkerExecutor
|
||||||
|
import org.jetbrains.kotlin.build.report.metrics.BuildMetricsReporter
|
||||||
|
import org.jetbrains.kotlin.build.report.metrics.BuildPerformanceMetric
|
||||||
|
import org.jetbrains.kotlin.compilerRunner.CompilerExecutionSettings
|
||||||
|
import org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner
|
||||||
|
import org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWorkArguments
|
||||||
|
import org.jetbrains.kotlin.gradle.tasks.GradleCompileTaskProvider
|
||||||
|
import org.jetbrains.kotlin.gradle.tasks.TaskOutputsBackup
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
internal class GradleBuildToolsApiCompilerRunner(
|
||||||
|
taskProvider: GradleCompileTaskProvider,
|
||||||
|
jdkToolsJar: File?,
|
||||||
|
compilerExecutionSettings: CompilerExecutionSettings,
|
||||||
|
buildMetrics: BuildMetricsReporter,
|
||||||
|
private val workerExecutor: WorkerExecutor
|
||||||
|
) : GradleCompilerRunner(taskProvider, jdkToolsJar, compilerExecutionSettings, buildMetrics) {
|
||||||
|
override fun runCompilerAsync(
|
||||||
|
workArgs: GradleKotlinCompilerWorkArguments,
|
||||||
|
taskOutputsBackup: TaskOutputsBackup?
|
||||||
|
): WorkQueue {
|
||||||
|
|
||||||
|
buildMetrics.addTimeMetric(BuildPerformanceMetric.CALL_WORKER)
|
||||||
|
val workQueue = workerExecutor.noIsolation()
|
||||||
|
workQueue.submit(BuildToolsApiCompilationWork::class.java) { params ->
|
||||||
|
params.compilerWorkArguments.set(workArgs)
|
||||||
|
if (taskOutputsBackup != null) {
|
||||||
|
params.taskOutputsToRestore.set(taskOutputsBackup.outputsToRestore)
|
||||||
|
params.buildDir.set(taskOutputsBackup.buildDirectory)
|
||||||
|
params.snapshotsDir.set(taskOutputsBackup.snapshotsDir)
|
||||||
|
params.metricsReporter.set(buildMetrics)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return workQueue
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
@@ -13,6 +13,8 @@ import org.gradle.api.internal.plugins.DslObject
|
|||||||
import org.gradle.jvm.toolchain.JavaLanguageVersion
|
import org.gradle.jvm.toolchain.JavaLanguageVersion
|
||||||
import org.gradle.jvm.toolchain.JavaToolchainSpec
|
import org.gradle.jvm.toolchain.JavaToolchainSpec
|
||||||
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
|
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
|
||||||
|
import org.jetbrains.kotlin.gradle.internal.KOTLIN_BUILD_TOOLS_API_IMPL
|
||||||
|
import org.jetbrains.kotlin.gradle.internal.KOTLIN_MODULE_GROUP
|
||||||
import org.jetbrains.kotlin.gradle.plugin.*
|
import org.jetbrains.kotlin.gradle.plugin.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider
|
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget
|
||||||
|
|||||||
+1
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.gradle.utils.withType
|
|||||||
|
|
||||||
internal const val KOTLIN_MODULE_GROUP = "org.jetbrains.kotlin"
|
internal const val KOTLIN_MODULE_GROUP = "org.jetbrains.kotlin"
|
||||||
internal const val KOTLIN_COMPILER_EMBEDDABLE = "kotlin-compiler-embeddable"
|
internal const val KOTLIN_COMPILER_EMBEDDABLE = "kotlin-compiler-embeddable"
|
||||||
|
internal const val KOTLIN_BUILD_TOOLS_API_IMPL = "build-tools-impl"
|
||||||
internal const val PLATFORM_INTEGERS_SUPPORT_LIBRARY = "platform-integers"
|
internal const val PLATFORM_INTEGERS_SUPPORT_LIBRARY = "platform-integers"
|
||||||
|
|
||||||
internal fun customizeKotlinDependencies(project: Project) {
|
internal fun customizeKotlinDependencies(project: Project) {
|
||||||
|
|||||||
+1
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.gradle.tasks.*
|
|||||||
const val PLUGIN_CLASSPATH_CONFIGURATION_NAME = "kotlinCompilerPluginClasspath"
|
const val PLUGIN_CLASSPATH_CONFIGURATION_NAME = "kotlinCompilerPluginClasspath"
|
||||||
const val NATIVE_COMPILER_PLUGIN_CLASSPATH_CONFIGURATION_NAME = "kotlinNativeCompilerPluginClasspath"
|
const val NATIVE_COMPILER_PLUGIN_CLASSPATH_CONFIGURATION_NAME = "kotlinNativeCompilerPluginClasspath"
|
||||||
internal const val COMPILER_CLASSPATH_CONFIGURATION_NAME = "kotlinCompilerClasspath"
|
internal const val COMPILER_CLASSPATH_CONFIGURATION_NAME = "kotlinCompilerClasspath"
|
||||||
|
internal const val BUILD_TOOLS_API_CLASSPATH_CONFIGURATION_NAME = "kotlinBuildToolsApiClasspath"
|
||||||
internal const val KLIB_COMMONIZER_CLASSPATH_CONFIGURATION_NAME = "kotlinKlibCommonizerClasspath"
|
internal const val KLIB_COMMONIZER_CLASSPATH_CONFIGURATION_NAME = "kotlinKlibCommonizerClasspath"
|
||||||
|
|
||||||
const val KOTLIN_DSL_NAME = "kotlin"
|
const val KOTLIN_DSL_NAME = "kotlin"
|
||||||
|
|||||||
+17
-1
@@ -27,6 +27,7 @@ import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
|||||||
import org.jetbrains.kotlin.compilerRunner.maybeCreateCommonizerClasspathConfiguration
|
import org.jetbrains.kotlin.compilerRunner.maybeCreateCommonizerClasspathConfiguration
|
||||||
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
|
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
|
||||||
import org.jetbrains.kotlin.gradle.dsl.*
|
import org.jetbrains.kotlin.gradle.dsl.*
|
||||||
|
import org.jetbrains.kotlin.gradle.internal.KOTLIN_BUILD_TOOLS_API_IMPL
|
||||||
import org.jetbrains.kotlin.gradle.internal.KOTLIN_COMPILER_EMBEDDABLE
|
import org.jetbrains.kotlin.gradle.internal.KOTLIN_COMPILER_EMBEDDABLE
|
||||||
import org.jetbrains.kotlin.gradle.internal.KOTLIN_MODULE_GROUP
|
import org.jetbrains.kotlin.gradle.internal.KOTLIN_MODULE_GROUP
|
||||||
import org.jetbrains.kotlin.gradle.logging.kotlinDebug
|
import org.jetbrains.kotlin.gradle.logging.kotlinDebug
|
||||||
@@ -116,12 +117,27 @@ abstract class DefaultKotlinBasePlugin : KotlinBasePlugin {
|
|||||||
project.dependencies.create("$KOTLIN_MODULE_GROUP:$KOTLIN_COMPILER_EMBEDDABLE:${project.getKotlinPluginVersion()}")
|
project.dependencies.create("$KOTLIN_MODULE_GROUP:$KOTLIN_COMPILER_EMBEDDABLE:${project.getKotlinPluginVersion()}")
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
project
|
||||||
|
.configurations
|
||||||
|
.maybeCreate(BUILD_TOOLS_API_CLASSPATH_CONFIGURATION_NAME)
|
||||||
|
.markResolvable()
|
||||||
|
.defaultDependencies {
|
||||||
|
it.add(
|
||||||
|
project.dependencies.create("$KOTLIN_MODULE_GROUP:$KOTLIN_BUILD_TOOLS_API_IMPL:${project.getKotlinPluginVersion()}")
|
||||||
|
)
|
||||||
|
}
|
||||||
project
|
project
|
||||||
.tasks
|
.tasks
|
||||||
.withType(AbstractKotlinCompileTool::class.java)
|
.withType(AbstractKotlinCompileTool::class.java)
|
||||||
.configureEach { task ->
|
.configureEach { task ->
|
||||||
task.defaultCompilerClasspath.setFrom(
|
task.defaultCompilerClasspath.setFrom(
|
||||||
project.configurations.named(COMPILER_CLASSPATH_CONFIGURATION_NAME)
|
{
|
||||||
|
val classpathConfiguration = when (task.runViaBuildToolsApi.get()) {
|
||||||
|
true -> BUILD_TOOLS_API_CLASSPATH_CONFIGURATION_NAME
|
||||||
|
false -> COMPILER_CLASSPATH_CONFIGURATION_NAME
|
||||||
|
}
|
||||||
|
project.configurations.named(classpathConfiguration)
|
||||||
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+5
@@ -36,6 +36,7 @@ import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLI
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_MPP_IMPORT_ENABLE_SLOW_SOURCES_JAR_RESOLVER
|
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_MPP_IMPORT_ENABLE_SLOW_SOURCES_JAR_RESOLVER
|
||||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_NATIVE_DEPENDENCY_PROPAGATION
|
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_NATIVE_DEPENDENCY_PROPAGATION
|
||||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_NATIVE_USE_XCODE_MESSAGE_STYLE
|
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_NATIVE_USE_XCODE_MESSAGE_STYLE
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_RUN_COMPILER_VIA_BUILD_TOOLS_API
|
||||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_STDLIB_DEFAULT_DEPENDENCY
|
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_STDLIB_DEFAULT_DEPENDENCY
|
||||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_STDLIB_JDK_VARIANTS_VERSION_ALIGNMENT
|
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_STDLIB_JDK_VARIANTS_VERSION_ALIGNMENT
|
||||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_SUPPRESS_EXPERIMENTAL_IC_OPTIMIZATIONS_WARNING
|
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_SUPPRESS_EXPERIMENTAL_IC_OPTIMIZATIONS_WARNING
|
||||||
@@ -513,6 +514,9 @@ internal class PropertiesProvider private constructor(private val project: Proje
|
|||||||
val createDefaultMultiplatformPublications: Boolean
|
val createDefaultMultiplatformPublications: Boolean
|
||||||
get() = booleanProperty(KOTLIN_CREATE_DEFAULT_MULTIPLATFORM_PUBLICATIONS) ?: true
|
get() = booleanProperty(KOTLIN_CREATE_DEFAULT_MULTIPLATFORM_PUBLICATIONS) ?: true
|
||||||
|
|
||||||
|
val runKotlinCompilerViaBuildToolsApi: Boolean
|
||||||
|
get() = booleanProperty(KOTLIN_RUN_COMPILER_VIA_BUILD_TOOLS_API) ?: false
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves a comma-separated list of browsers to use when running karma tests for [target]
|
* Retrieves a comma-separated list of browsers to use when running karma tests for [target]
|
||||||
* @see KOTLIN_JS_KARMA_BROWSERS
|
* @see KOTLIN_JS_KARMA_BROWSERS
|
||||||
@@ -599,6 +603,7 @@ internal class PropertiesProvider private constructor(private val project: Proje
|
|||||||
const val KOTLIN_COMPILER_KEEP_INCREMENTAL_COMPILATION_CACHES_IN_MEMORY = "kotlin.compiler.keepIncrementalCompilationCachesInMemory"
|
const val KOTLIN_COMPILER_KEEP_INCREMENTAL_COMPILATION_CACHES_IN_MEMORY = "kotlin.compiler.keepIncrementalCompilationCachesInMemory"
|
||||||
const val KOTLIN_SUPPRESS_EXPERIMENTAL_IC_OPTIMIZATIONS_WARNING = "kotlin.compiler.suppressExperimentalICOptimizationsWarning"
|
const val KOTLIN_SUPPRESS_EXPERIMENTAL_IC_OPTIMIZATIONS_WARNING = "kotlin.compiler.suppressExperimentalICOptimizationsWarning"
|
||||||
const val KOTLIN_CREATE_DEFAULT_MULTIPLATFORM_PUBLICATIONS = "kotlin.internal.mpp.createDefaultMultiplatformPublications"
|
const val KOTLIN_CREATE_DEFAULT_MULTIPLATFORM_PUBLICATIONS = "kotlin.internal.mpp.createDefaultMultiplatformPublications"
|
||||||
|
const val KOTLIN_RUN_COMPILER_VIA_BUILD_TOOLS_API = "kotlin.compiler.runViaBuildToolsApi"
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|||||||
+1
-1
@@ -342,7 +342,7 @@ abstract class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
|
|||||||
?: compilation.npmProject.dir.resolve(if (dev) DCE_DEV_DIR else DCE_DIR)
|
?: compilation.npmProject.dir.resolve(if (dev) DCE_DEV_DIR else DCE_DIR)
|
||||||
)
|
)
|
||||||
it.defaultCompilerClasspath.setFrom(project.configurations.named(COMPILER_CLASSPATH_CONFIGURATION_NAME))
|
it.defaultCompilerClasspath.setFrom(project.configurations.named(COMPILER_CLASSPATH_CONFIGURATION_NAME))
|
||||||
|
it.runViaBuildToolsApi.value(false).disallowChanges() // The legacy backend task is not going to be supported
|
||||||
it.setSource(kotlinTask.map { it.outputFileProperty })
|
it.setSource(kotlinTask.map { it.outputFileProperty })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
@@ -73,6 +73,7 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget> : AbstractKotl
|
|||||||
it.usesService(konanPropertiesBuildService)
|
it.usesService(konanPropertiesBuildService)
|
||||||
it.toolOptions.freeCompilerArgs.value(compilationCompilerOptions.options.freeCompilerArgs)
|
it.toolOptions.freeCompilerArgs.value(compilationCompilerOptions.options.freeCompilerArgs)
|
||||||
it.toolOptions.freeCompilerArgs.addAll(providers.provider { PropertiesProvider(project).nativeLinkArgs })
|
it.toolOptions.freeCompilerArgs.addAll(providers.provider { PropertiesProvider(project).nativeLinkArgs })
|
||||||
|
it.runViaBuildToolsApi.value(false).disallowChanges() // K/N is not yet supported
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -398,6 +399,7 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget> : AbstractKotl
|
|||||||
it.compilerOptions.useK2.set(true)
|
it.compilerOptions.useK2.set(true)
|
||||||
}
|
}
|
||||||
it.compilerOptions.useK2.disallowChanges()
|
it.compilerOptions.useK2.disallowChanges()
|
||||||
|
it.runViaBuildToolsApi.value(false).disallowChanges() // K/N is not yet supported
|
||||||
}
|
}
|
||||||
|
|
||||||
compilationInfo.classesDirs.from(compileTaskProvider.map { it.outputFile })
|
compilationInfo.classesDirs.from(compileTaskProvider.map { it.outputFile })
|
||||||
|
|||||||
+4
-3
@@ -27,8 +27,8 @@ import org.jetbrains.kotlin.cli.common.CompilerSystemProperties
|
|||||||
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
||||||
import org.jetbrains.kotlin.compilerRunner.CompilerExecutionSettings
|
import org.jetbrains.kotlin.compilerRunner.CompilerExecutionSettings
|
||||||
import org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner
|
import org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner
|
||||||
import org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers
|
|
||||||
import org.jetbrains.kotlin.compilerRunner.UsesCompilerSystemPropertiesService
|
import org.jetbrains.kotlin.compilerRunner.UsesCompilerSystemPropertiesService
|
||||||
|
import org.jetbrains.kotlin.compilerRunner.createGradleCompilerRunner
|
||||||
import org.jetbrains.kotlin.daemon.common.MultiModuleICSettings
|
import org.jetbrains.kotlin.daemon.common.MultiModuleICSettings
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptions
|
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptions
|
||||||
import org.jetbrains.kotlin.gradle.incremental.UsesIncrementalModuleInfoBuildService
|
import org.jetbrains.kotlin.gradle.incremental.UsesIncrementalModuleInfoBuildService
|
||||||
@@ -173,7 +173,7 @@ abstract class AbstractKotlinCompile<T : CommonCompilerArguments> @Inject constr
|
|||||||
defaultKotlinJavaToolchain
|
defaultKotlinJavaToolchain
|
||||||
.map {
|
.map {
|
||||||
val toolsJar = it.currentJvmJdkToolsJar.orNull
|
val toolsJar = it.currentJvmJdkToolsJar.orNull
|
||||||
GradleCompilerRunnerWithWorkers(
|
createGradleCompilerRunner(
|
||||||
taskProvider,
|
taskProvider,
|
||||||
toolsJar,
|
toolsJar,
|
||||||
CompilerExecutionSettings(
|
CompilerExecutionSettings(
|
||||||
@@ -182,7 +182,8 @@ abstract class AbstractKotlinCompile<T : CommonCompilerArguments> @Inject constr
|
|||||||
useDaemonFallbackStrategy.get()
|
useDaemonFallbackStrategy.get()
|
||||||
),
|
),
|
||||||
params.first,
|
params.first,
|
||||||
workerExecutor
|
workerExecutor,
|
||||||
|
runViaBuildToolsApi.get(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
@@ -122,6 +122,9 @@ abstract class AbstractKotlinCompileTool<T : CommonToolArguments> @Inject constr
|
|||||||
internal val defaultCompilerClasspath: ConfigurableFileCollection =
|
internal val defaultCompilerClasspath: ConfigurableFileCollection =
|
||||||
project.objects.fileCollection()
|
project.objects.fileCollection()
|
||||||
|
|
||||||
|
@get:Internal
|
||||||
|
internal abstract val runViaBuildToolsApi: Property<Boolean>
|
||||||
|
|
||||||
protected fun validateCompilerClasspath() {
|
protected fun validateCompilerClasspath() {
|
||||||
// Note that the check triggers configuration resolution
|
// Note that the check triggers configuration resolution
|
||||||
require(!defaultCompilerClasspath.isEmpty) {
|
require(!defaultCompilerClasspath.isEmpty) {
|
||||||
|
|||||||
+1
@@ -122,6 +122,7 @@ internal abstract class AbstractKotlinCompileConfig<TASK : AbstractKotlinCompile
|
|||||||
if (propertiesProvider.useK2 == true) {
|
if (propertiesProvider.useK2 == true) {
|
||||||
task.compilerOptions.useK2.value(true)
|
task.compilerOptions.useK2.value(true)
|
||||||
}
|
}
|
||||||
|
task.runViaBuildToolsApi.convention(propertiesProvider.runKotlinCompilerViaBuildToolsApi).finalizeValueOnRead()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user