Introduce -Xcommon-sources and pass it correctly from build tool plugins
#KT-25196 In Progress
This commit is contained in:
+16
-13
@@ -17,6 +17,9 @@
|
||||
package org.jetbrains.kotlin.compilerRunner
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.invocation.Gradle
|
||||
import org.gradle.api.plugins.JavaPluginConvention
|
||||
import org.gradle.jvm.tasks.Jar
|
||||
import org.jetbrains.kotlin.build.JvmSourceRoot
|
||||
import org.jetbrains.kotlin.cli.common.ExitCode
|
||||
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
||||
@@ -27,22 +30,17 @@ import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation
|
||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
|
||||
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
||||
import org.jetbrains.kotlin.cli.common.messages.MessageRenderer
|
||||
import org.gradle.api.invocation.Gradle
|
||||
import org.gradle.api.plugins.JavaPluginConvention
|
||||
import org.gradle.jvm.tasks.Jar
|
||||
import org.jetbrains.kotlin.config.Services
|
||||
import org.jetbrains.kotlin.daemon.client.CompileServiceSession
|
||||
import org.jetbrains.kotlin.daemon.common.*
|
||||
import org.jetbrains.kotlin.daemon.common.IncrementalModuleEntry
|
||||
import org.jetbrains.kotlin.daemon.common.IncrementalModuleInfo
|
||||
import org.jetbrains.kotlin.gradle.incremental.GRADLE_CACHE_VERSION
|
||||
import org.jetbrains.kotlin.gradle.incremental.GRADLE_CACHE_VERSION_FILE_NAME
|
||||
import org.jetbrains.kotlin.gradle.utils.relativeToRoot
|
||||
import org.jetbrains.kotlin.gradle.plugin.kotlinDebug
|
||||
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
|
||||
import org.jetbrains.kotlin.gradle.tasks.InspectClassesForMultiModuleIC
|
||||
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
|
||||
import org.jetbrains.kotlin.gradle.utils.newTmpFile
|
||||
import org.jetbrains.kotlin.gradle.utils.relativeToRoot
|
||||
import org.jetbrains.kotlin.incremental.*
|
||||
import java.io.ByteArrayOutputStream
|
||||
import java.io.File
|
||||
@@ -95,19 +93,22 @@ internal class GradleCompilerRunner(private val project: Project) : KotlinCompil
|
||||
|
||||
fun runJvmCompiler(
|
||||
sourcesToCompile: List<File>,
|
||||
commonSources: List<File>,
|
||||
javaSourceRoots: Iterable<File>,
|
||||
javaPackagePrefix: String?,
|
||||
args: K2JVMCompilerArguments,
|
||||
environment: GradleCompilerEnvironment
|
||||
): ExitCode {
|
||||
val buildFile = makeModuleFile(
|
||||
args.moduleName!!,
|
||||
isTest = false,
|
||||
outputDir = args.destinationAsFile,
|
||||
sourcesToCompile = sourcesToCompile,
|
||||
javaSourceRoots = javaSourceRoots.map { JvmSourceRoot(it, javaPackagePrefix) },
|
||||
classpath = args.classpathAsList,
|
||||
friendDirs = args.friendPaths?.map(::File) ?: emptyList())
|
||||
args.moduleName!!,
|
||||
isTest = false,
|
||||
outputDir = args.destinationAsFile,
|
||||
sourcesToCompile = sourcesToCompile,
|
||||
commonSources = commonSources,
|
||||
javaSourceRoots = javaSourceRoots.map { JvmSourceRoot(it, javaPackagePrefix) },
|
||||
classpath = args.classpathAsList,
|
||||
friendDirs = args.friendPaths?.map(::File).orEmpty()
|
||||
)
|
||||
args.buildFile = buildFile.absolutePath
|
||||
|
||||
if (environment !is GradleIncrementalCompilerEnvironment || kotlinCompilerExecutionStrategy != "daemon") {
|
||||
@@ -125,10 +126,12 @@ internal class GradleCompilerRunner(private val project: Project) : KotlinCompil
|
||||
|
||||
fun runJsCompiler(
|
||||
kotlinSources: List<File>,
|
||||
kotlinCommonSources: List<File>,
|
||||
args: K2JSCompilerArguments,
|
||||
environment: GradleCompilerEnvironment
|
||||
): ExitCode {
|
||||
args.freeArgs += kotlinSources.map { it.absolutePath }
|
||||
args.commonSources = kotlinCommonSources.map { it.absolutePath }.toTypedArray()
|
||||
return runCompiler(K2JS_COMPILER, args, environment)
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -16,11 +16,11 @@ import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
|
||||
import org.jetbrains.kotlin.compilerRunner.GradleCompilerEnvironment
|
||||
import org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner
|
||||
import org.jetbrains.kotlin.compilerRunner.OutputItemsCollectorImpl
|
||||
import org.jetbrains.kotlin.gradle.plugin.PLUGIN_CLASSPATH_CONFIGURATION_NAME
|
||||
import org.jetbrains.kotlin.gradle.tasks.CompilerPluginOptions
|
||||
import org.jetbrains.kotlin.gradle.tasks.GradleMessageCollector
|
||||
import org.jetbrains.kotlin.gradle.tasks.clearOutputDirectories
|
||||
import org.jetbrains.kotlin.gradle.tasks.throwGradleExceptionIfError
|
||||
import org.jetbrains.kotlin.gradle.plugin.PLUGIN_CLASSPATH_CONFIGURATION_NAME
|
||||
import org.jetbrains.kotlin.gradle.utils.toSortedPathsArray
|
||||
|
||||
open class KaptWithKotlincTask : KaptTask(), CompilerArgumentAwareWithInput<K2JVMCompilerArguments> {
|
||||
@@ -70,6 +70,7 @@ open class KaptWithKotlincTask : KaptTask(), CompilerArgumentAwareWithInput<K2JV
|
||||
val compilerRunner = GradleCompilerRunner(project)
|
||||
val exitCode = compilerRunner.runJvmCompiler(
|
||||
sourcesToCompile = emptyList(),
|
||||
commonSources = emptyList(),
|
||||
javaSourceRoots = javaSourceRoots,
|
||||
javaPackagePrefix = kotlinCompileTask.javaPackagePrefix,
|
||||
args = args,
|
||||
@@ -85,4 +86,4 @@ open class KaptWithKotlincTask : KaptTask(), CompilerArgumentAwareWithInput<K2JV
|
||||
val rtVersion = System.getProperty("java.runtime.version")
|
||||
return if (Character.isDigit(rtVersion[0])) rtVersion else System.getProperty("java.version")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+3
-1
@@ -154,7 +154,9 @@ open class KotlinPlatformImplementationPluginBase(platformName: String) : Kotlin
|
||||
.filterIsInstance<AbstractKotlinCompile<*>>()
|
||||
.single { it.sourceSetName == commonSourceSet.name }
|
||||
|
||||
platformTask.source(getKotlinSourceDirectorySetSafe(commonSourceSet))
|
||||
val commonSources = getKotlinSourceDirectorySetSafe(commonSourceSet)!!
|
||||
platformTask.source(commonSources)
|
||||
platformTask.commonSourceSet = commonSources
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+16
-9
@@ -27,14 +27,16 @@ import org.jetbrains.kotlin.compilerRunner.*
|
||||
import org.jetbrains.kotlin.daemon.common.MultiModuleICSettings
|
||||
import org.jetbrains.kotlin.gradle.dsl.*
|
||||
import org.jetbrains.kotlin.gradle.incremental.ChangedFiles
|
||||
import org.jetbrains.kotlin.gradle.utils.pathsAsStringRelativeTo
|
||||
import org.jetbrains.kotlin.gradle.internal.CompilerArgumentAwareWithInput
|
||||
import org.jetbrains.kotlin.gradle.internal.prepareCompilerArguments
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
import org.jetbrains.kotlin.gradle.utils.ParsedGradleVersion
|
||||
import org.jetbrains.kotlin.gradle.utils.toSortedPathsArray
|
||||
import org.jetbrains.kotlin.gradle.utils.isParentOf
|
||||
import org.jetbrains.kotlin.incremental.*
|
||||
import org.jetbrains.kotlin.gradle.utils.pathsAsStringRelativeTo
|
||||
import org.jetbrains.kotlin.gradle.utils.toSortedPathsArray
|
||||
import org.jetbrains.kotlin.incremental.ChangedFiles
|
||||
import org.jetbrains.kotlin.incremental.classpathAsList
|
||||
import org.jetbrains.kotlin.incremental.destinationAsFile
|
||||
import org.jetbrains.kotlin.utils.LibraryUtils
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
@@ -189,6 +191,9 @@ abstract class AbstractKotlinCompile<T : CommonCompilerArguments>() : AbstractKo
|
||||
@get:Internal
|
||||
internal var sourceSetName: String by Delegates.notNull()
|
||||
|
||||
@get:InputFiles
|
||||
internal var commonSourceSet: Iterable<File> = emptyList()
|
||||
|
||||
@get:Input
|
||||
internal val moduleName: String
|
||||
get() {
|
||||
@@ -385,11 +390,13 @@ open class KotlinCompile : AbstractKotlinCompile<K2JVMCompilerArguments>(), Kotl
|
||||
|
||||
try {
|
||||
val exitCode = compilerRunner.runJvmCompiler(
|
||||
sourceRoots.kotlinSourceFiles,
|
||||
sourceRoots.javaSourceRoots,
|
||||
javaPackagePrefix,
|
||||
args,
|
||||
environment)
|
||||
sourceRoots.kotlinSourceFiles,
|
||||
commonSourceSet.toList(),
|
||||
sourceRoots.javaSourceRoots,
|
||||
javaPackagePrefix,
|
||||
args,
|
||||
environment
|
||||
)
|
||||
|
||||
disableMultiModuleICIfNeeded()
|
||||
processCompilerExitCode(exitCode)
|
||||
@@ -536,7 +543,7 @@ open class Kotlin2JsCompile() : AbstractKotlinCompile<K2JSCompilerArguments>(),
|
||||
}
|
||||
}
|
||||
|
||||
val exitCode = compilerRunner.runJsCompiler(sourceRoots.kotlinSourceFiles, args, environment)
|
||||
val exitCode = compilerRunner.runJsCompiler(sourceRoots.kotlinSourceFiles, commonSourceSet.toList(), args, environment)
|
||||
throwGradleExceptionIfError(exitCode)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -179,7 +179,7 @@ public class ExecuteKotlinScriptMojo extends AbstractMojo {
|
||||
}
|
||||
}
|
||||
|
||||
configuration.add(CLIConfigurationKeys.CONTENT_ROOTS, new KotlinSourceRoot(scriptFile.getAbsolutePath()));
|
||||
configuration.add(CLIConfigurationKeys.CONTENT_ROOTS, new KotlinSourceRoot(scriptFile.getAbsolutePath(), false));
|
||||
configuration.put(CommonConfigurationKeys.MODULE_NAME, JvmAbi.DEFAULT_MODULE_NAME);
|
||||
|
||||
ScriptingCompilerConfigurationExtensionKt.configureScriptDefinitions(
|
||||
|
||||
Reference in New Issue
Block a user