[JS IR] Support generating both IR and pre-IR libraries
Remove all previous -Xir options Add: -Xir-produce-klib-dir -Xir-produce-klib-file -Xir-produce-js -Xir-only
This commit is contained in:
+25
-8
@@ -16,10 +16,7 @@ import org.gradle.api.tasks.compile.JavaCompile
|
||||
import org.gradle.api.tasks.incremental.IncrementalTaskInputs
|
||||
import org.gradle.workers.WorkerExecutor
|
||||
import org.jetbrains.kotlin.build.DEFAULT_KOTLIN_SOURCE_FILES_EXTENSIONS
|
||||
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
||||
import org.jetbrains.kotlin.cli.common.arguments.CommonToolArguments
|
||||
import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments
|
||||
import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
|
||||
import org.jetbrains.kotlin.cli.common.arguments.*
|
||||
import org.jetbrains.kotlin.compilerRunner.*
|
||||
import org.jetbrains.kotlin.daemon.common.MultiModuleICSettings
|
||||
import org.jetbrains.kotlin.gradle.dsl.*
|
||||
@@ -553,9 +550,30 @@ open class Kotlin2JsCompile : AbstractKotlinCompile<K2JSCompilerArguments>(), Ko
|
||||
return friendPaths.filter { filter(File(it)) }
|
||||
}
|
||||
|
||||
private fun isHybridKotlinJsLibrary(file: File): Boolean =
|
||||
LibraryUtils.isKotlinJavascriptLibrary(file) && LibraryUtils.isKotlinJavascriptIrLibrary(file)
|
||||
|
||||
private fun KotlinJsOptions.isPreIrBackendDisabled(): Boolean =
|
||||
listOf(
|
||||
"-Xir-only",
|
||||
"-Xir-produce-js",
|
||||
"-Xir-produce-klib-file"
|
||||
).any(freeCompilerArgs::contains)
|
||||
|
||||
private fun KotlinJsOptions.isIrBackendEnabled(): Boolean =
|
||||
listOf(
|
||||
"-Xir-produce-klib-dir",
|
||||
"-Xir-produce-js",
|
||||
"-Xir-produce-klib-file"
|
||||
).any(freeCompilerArgs::contains)
|
||||
|
||||
private val libraryFilter: (File) -> Boolean
|
||||
get() = if ("-Xir" in kotlinOptions.freeCompilerArgs) {
|
||||
LibraryUtils::isKotlinJavascriptIrLibrary
|
||||
get() = if (kotlinOptions.isIrBackendEnabled()) {
|
||||
if (kotlinOptions.isPreIrBackendDisabled()) {
|
||||
LibraryUtils::isKotlinJavascriptIrLibrary
|
||||
} else {
|
||||
::isHybridKotlinJsLibrary
|
||||
}
|
||||
} else {
|
||||
LibraryUtils::isKotlinJavascriptLibrary
|
||||
}
|
||||
@@ -566,10 +584,9 @@ open class Kotlin2JsCompile : AbstractKotlinCompile<K2JSCompilerArguments>(), Ko
|
||||
logger.debug("Calling compiler")
|
||||
destinationDir.mkdirs()
|
||||
|
||||
if ("-Xir" in args.freeArgs) {
|
||||
if (args.isIrBackendEnabled()) {
|
||||
logger.kotlinDebug("Using JS IR backend")
|
||||
incremental = false
|
||||
args.freeArgs += "-Xir-legacy-gradle-plugin-compatibility"
|
||||
}
|
||||
|
||||
val dependencies = compileClasspath
|
||||
|
||||
+3
-2
@@ -105,8 +105,9 @@ public class K2JSCompilerMojo extends KotlinCompileMojoBase<K2JSCompilerArgument
|
||||
arguments.setMetaInfo(metaInfo);
|
||||
arguments.setModuleKind(moduleKind);
|
||||
arguments.setMain(main);
|
||||
arguments.setIrBackend(useIrBackend);
|
||||
arguments.setIrLegacyGradlePluginCompatibility(true);
|
||||
arguments.setIrOnly(useIrBackend);
|
||||
arguments.setIrProduceJs(useIrBackend);
|
||||
arguments.setIrProduceKlibDir(useIrBackend);
|
||||
|
||||
List<String> libraries;
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user