[Gradle, JS] Configure compiler type with single platform plugin
This commit is contained in:
+8
-16
@@ -31,7 +31,6 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsSingleTargetPreset
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinWithJavaTarget
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinWithJavaTarget
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl
|
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrSingleTargetPreset
|
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrSingleTargetPreset
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
|
|
||||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||||
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
|
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
@@ -56,7 +55,7 @@ internal val Project.multiplatformExtensionOrNull: KotlinMultiplatformExtension?
|
|||||||
internal val Project.multiplatformExtension: KotlinMultiplatformExtension
|
internal val Project.multiplatformExtension: KotlinMultiplatformExtension
|
||||||
get() = extensions.getByName(KOTLIN_PROJECT_EXTENSION_NAME) as KotlinMultiplatformExtension
|
get() = extensions.getByName(KOTLIN_PROJECT_EXTENSION_NAME) as KotlinMultiplatformExtension
|
||||||
|
|
||||||
open class KotlinProjectExtension: KotlinSourceSetContainer {
|
open class KotlinProjectExtension : KotlinSourceSetContainer {
|
||||||
val experimental: ExperimentalExtension
|
val experimental: ExperimentalExtension
|
||||||
get() = DslObject(this).extensions.getByType(ExperimentalExtension::class.java)
|
get() = DslObject(this).extensions.getByType(ExperimentalExtension::class.java)
|
||||||
|
|
||||||
@@ -103,12 +102,18 @@ open class KotlinJsProjectExtension : KotlinSingleTargetExtension() {
|
|||||||
compiler: JsCompilerType = legacy,
|
compiler: JsCompilerType = legacy,
|
||||||
body: KotlinJsTargetDsl.() -> Unit
|
body: KotlinJsTargetDsl.() -> Unit
|
||||||
) {
|
) {
|
||||||
val target = when (compiler) {
|
val target: KotlinJsTargetDsl = when (compiler) {
|
||||||
legacy -> legacyPreset
|
legacy -> legacyPreset
|
||||||
|
.also { it.irPreset = null }
|
||||||
.createTarget("js")
|
.createTarget("js")
|
||||||
ir -> irPreset
|
ir -> irPreset
|
||||||
|
.also { it.mixedMode = false }
|
||||||
.createTarget("js")
|
.createTarget("js")
|
||||||
both -> legacyPreset
|
both -> legacyPreset
|
||||||
|
.also {
|
||||||
|
irPreset.mixedMode = true
|
||||||
|
it.irPreset = irPreset
|
||||||
|
}
|
||||||
.createTarget(
|
.createTarget(
|
||||||
lowerCamelCaseName(
|
lowerCamelCaseName(
|
||||||
"js",
|
"js",
|
||||||
@@ -139,19 +144,6 @@ open class KotlinJsProjectExtension : KotlinSingleTargetExtension() {
|
|||||||
target.project.container(KotlinTarget::class.java).apply { add(target) }
|
target.project.container(KotlinTarget::class.java).apply { add(target) }
|
||||||
}
|
}
|
||||||
|
|
||||||
open class KotlinJsIrProjectExtension : KotlinSingleTargetExtension() {
|
|
||||||
override lateinit var target: KotlinJsIrTarget
|
|
||||||
|
|
||||||
open fun js(body: KotlinJsIrTarget.() -> Unit) = target.run(body)
|
|
||||||
|
|
||||||
@Deprecated(
|
|
||||||
"Needed for IDE import using the MPP import mechanism",
|
|
||||||
level = DeprecationLevel.HIDDEN
|
|
||||||
)
|
|
||||||
fun getTargets() =
|
|
||||||
target.project.container(KotlinTarget::class.java).apply { add(target) }
|
|
||||||
}
|
|
||||||
|
|
||||||
open class KotlinCommonProjectExtension : KotlinSingleJavaTargetExtension() {
|
open class KotlinCommonProjectExtension : KotlinSingleJavaTargetExtension() {
|
||||||
override lateinit var target: KotlinWithJavaTarget<KotlinMultiplatformCommonOptions>
|
override lateinit var target: KotlinWithJavaTarget<KotlinMultiplatformCommonOptions>
|
||||||
internal set
|
internal set
|
||||||
|
|||||||
+4
-26
@@ -26,14 +26,12 @@ import org.gradle.api.logging.Logging
|
|||||||
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
||||||
import org.jetbrains.kotlin.gradle.dsl.*
|
import org.jetbrains.kotlin.gradle.dsl.*
|
||||||
import org.jetbrains.kotlin.gradle.logging.kotlinDebug
|
import org.jetbrains.kotlin.gradle.logging.kotlinDebug
|
||||||
import org.jetbrains.kotlin.gradle.plugin.JsCompilerType
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMultiplatformPlugin
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMultiplatformPlugin
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages
|
||||||
import org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSetFactory
|
import org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSetFactory
|
||||||
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
|
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsPlugin
|
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsPlugin
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
|
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrPlugin
|
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.npm.addNpmDependencyExtension
|
import org.jetbrains.kotlin.gradle.targets.js.npm.addNpmDependencyExtension
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KOTLIN_COMPILER_EMBEDDABLE
|
import org.jetbrains.kotlin.gradle.tasks.KOTLIN_COMPILER_EMBEDDABLE
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KOTLIN_KLIB_COMMONIZER_EMBEDDABLE
|
import org.jetbrains.kotlin.gradle.tasks.KOTLIN_KLIB_COMMONIZER_EMBEDDABLE
|
||||||
@@ -79,8 +77,6 @@ abstract class KotlinBasePluginWrapper(
|
|||||||
|
|
||||||
kotlinGradleBuildServices.detectKotlinPluginLoadedInMultipleProjects(project, kotlinPluginVersion)
|
kotlinGradleBuildServices.detectKotlinPluginLoadedInMultipleProjects(project, kotlinPluginVersion)
|
||||||
|
|
||||||
defineExtension(project)
|
|
||||||
|
|
||||||
project.createKotlinExtension(projectExtensionClass).apply {
|
project.createKotlinExtension(projectExtensionClass).apply {
|
||||||
fun kotlinSourceSetContainer(factory: NamedDomainObjectFactory<KotlinSourceSet>) =
|
fun kotlinSourceSetContainer(factory: NamedDomainObjectFactory<KotlinSourceSet>) =
|
||||||
project.container(KotlinSourceSet::class.java, factory)
|
project.container(KotlinSourceSet::class.java, factory)
|
||||||
@@ -112,9 +108,6 @@ abstract class KotlinBasePluginWrapper(
|
|||||||
project: Project,
|
project: Project,
|
||||||
kotlinGradleBuildServices: KotlinGradleBuildServices
|
kotlinGradleBuildServices: KotlinGradleBuildServices
|
||||||
): Plugin<Project>
|
): Plugin<Project>
|
||||||
|
|
||||||
protected open fun defineExtension(project: Project) {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
open class KotlinPluginWrapper @Inject constructor(
|
open class KotlinPluginWrapper @Inject constructor(
|
||||||
@@ -164,26 +157,11 @@ open class Kotlin2JsPluginWrapper @Inject constructor(
|
|||||||
open class KotlinJsPluginWrapper @Inject constructor(
|
open class KotlinJsPluginWrapper @Inject constructor(
|
||||||
fileResolver: FileResolver
|
fileResolver: FileResolver
|
||||||
) : KotlinBasePluginWrapper(fileResolver) {
|
) : KotlinBasePluginWrapper(fileResolver) {
|
||||||
override fun getPlugin(project: Project, kotlinGradleBuildServices: KotlinGradleBuildServices): Plugin<Project> {
|
override fun getPlugin(project: Project, kotlinGradleBuildServices: KotlinGradleBuildServices): Plugin<Project> =
|
||||||
val propertiesProvider = PropertiesProvider(project)
|
KotlinJsPlugin(kotlinPluginVersion)
|
||||||
|
|
||||||
return when (propertiesProvider.jsCompiler) {
|
override val projectExtensionClass: KClass<out KotlinJsProjectExtension>
|
||||||
JsCompilerType.ir -> KotlinJsIrPlugin(kotlinPluginVersion)
|
get() = KotlinJsProjectExtension::class
|
||||||
JsCompilerType.legacy -> KotlinJsPlugin(kotlinPluginVersion, false)
|
|
||||||
JsCompilerType.both -> KotlinJsPlugin(kotlinPluginVersion, true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override lateinit var projectExtensionClass: KClass<out KotlinProjectExtension>
|
|
||||||
|
|
||||||
override fun defineExtension(project: Project) {
|
|
||||||
val propertiesProvider = PropertiesProvider(project)
|
|
||||||
|
|
||||||
projectExtensionClass = when (propertiesProvider.jsCompiler) {
|
|
||||||
JsCompilerType.ir -> KotlinJsIrProjectExtension::class
|
|
||||||
JsCompilerType.legacy, JsCompilerType.both -> KotlinJsProjectExtension::class
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun createTestRegistry(project: Project) = KotlinTestsRegistry(project, "test")
|
override fun createTestRegistry(project: Project) = KotlinTestsRegistry(project, "test")
|
||||||
}
|
}
|
||||||
|
|||||||
-8
@@ -19,8 +19,6 @@ package org.jetbrains.kotlin.gradle.plugin
|
|||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.jetbrains.kotlin.gradle.dsl.Coroutines
|
import org.jetbrains.kotlin.gradle.dsl.Coroutines
|
||||||
import org.jetbrains.kotlin.gradle.dsl.NativeCacheKind
|
import org.jetbrains.kotlin.gradle.dsl.NativeCacheKind
|
||||||
import org.jetbrains.kotlin.gradle.plugin.JsCompilerType
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.JsCompilerType.Companion.jsCompilerProperty
|
|
||||||
import org.jetbrains.kotlin.gradle.targets.native.DisabledNativeTargetsReporter
|
import org.jetbrains.kotlin.gradle.targets.native.DisabledNativeTargetsReporter
|
||||||
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
|
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
|
||||||
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
|
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
|
||||||
@@ -170,12 +168,6 @@ internal class PropertiesProvider private constructor(private val project: Proje
|
|||||||
val jsDiscoverTypes: Boolean?
|
val jsDiscoverTypes: Boolean?
|
||||||
get() = booleanProperty("kotlin.js.experimental.discoverTypes")
|
get() = booleanProperty("kotlin.js.experimental.discoverTypes")
|
||||||
|
|
||||||
/**
|
|
||||||
* Use Kotlin/JS backend mode
|
|
||||||
*/
|
|
||||||
val jsCompiler: JsCompilerType
|
|
||||||
get() = property(jsCompilerProperty)?.let { JsCompilerType.byArgument(it) } ?: JsCompilerType.legacy
|
|
||||||
|
|
||||||
private fun propertyWithDeprecatedVariant(propName: String, deprecatedPropName: String): String? {
|
private fun propertyWithDeprecatedVariant(propName: String, deprecatedPropName: String): String? {
|
||||||
val deprecatedProperty = property(deprecatedPropName)
|
val deprecatedProperty = property(deprecatedPropName)
|
||||||
if (deprecatedProperty != null) {
|
if (deprecatedProperty != null) {
|
||||||
|
|||||||
+7
-5
@@ -155,14 +155,16 @@ class KotlinMultiplatformPlugin(
|
|||||||
fun setupDefaultPresets(project: Project) {
|
fun setupDefaultPresets(project: Project) {
|
||||||
with(project.multiplatformExtension.presets) {
|
with(project.multiplatformExtension.presets) {
|
||||||
add(KotlinJvmTargetPreset(project, kotlinPluginVersion))
|
add(KotlinJvmTargetPreset(project, kotlinPluginVersion))
|
||||||
add(KotlinJsTargetPreset(project, kotlinPluginVersion, null))
|
add(KotlinJsTargetPreset(project, kotlinPluginVersion).apply { irPreset = null })
|
||||||
add(KotlinJsIrTargetPreset(project, kotlinPluginVersion, false))
|
add(KotlinJsIrTargetPreset(project, kotlinPluginVersion).apply { mixedMode = false })
|
||||||
add(
|
add(
|
||||||
KotlinJsTargetPreset(
|
KotlinJsTargetPreset(
|
||||||
project,
|
project,
|
||||||
kotlinPluginVersion,
|
kotlinPluginVersion
|
||||||
KotlinJsIrTargetPreset(project, kotlinPluginVersion, true)
|
).apply {
|
||||||
)
|
irPreset = KotlinJsIrTargetPreset(project, kotlinPluginVersion)
|
||||||
|
.apply { mixedMode = true }
|
||||||
|
}
|
||||||
)
|
)
|
||||||
add(KotlinAndroidTargetPreset(project, kotlinPluginVersion))
|
add(KotlinAndroidTargetPreset(project, kotlinPluginVersion))
|
||||||
add(KotlinJvmWithJavaTargetPreset(project, kotlinPluginVersion))
|
add(KotlinJvmWithJavaTargetPreset(project, kotlinPluginVersion))
|
||||||
|
|||||||
+5
-19
@@ -10,16 +10,13 @@ import org.gradle.api.Project
|
|||||||
import org.gradle.api.plugins.JavaBasePlugin
|
import org.gradle.api.plugins.JavaBasePlugin
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJsProjectExtension
|
import org.jetbrains.kotlin.gradle.dsl.KotlinJsProjectExtension
|
||||||
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
||||||
import org.jetbrains.kotlin.gradle.plugin.JsCompilerType
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.configureDefaultVersionsResolutionStrategy
|
import org.jetbrains.kotlin.gradle.plugin.configureDefaultVersionsResolutionStrategy
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsSingleTargetPreset
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsSingleTargetPreset
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrSingleTargetPreset
|
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrSingleTargetPreset
|
||||||
import org.jetbrains.kotlin.gradle.utils.checkGradleCompatibility
|
import org.jetbrains.kotlin.gradle.utils.checkGradleCompatibility
|
||||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
|
||||||
|
|
||||||
open class KotlinJsPlugin(
|
open class KotlinJsPlugin(
|
||||||
private val kotlinPluginVersion: String,
|
private val kotlinPluginVersion: String
|
||||||
private val mixedMode: Boolean
|
|
||||||
) : Plugin<Project> {
|
) : Plugin<Project> {
|
||||||
|
|
||||||
override fun apply(project: Project) {
|
override fun apply(project: Project) {
|
||||||
@@ -33,20 +30,9 @@ open class KotlinJsPlugin(
|
|||||||
val kotlinExtension = project.kotlinExtension as KotlinJsProjectExtension
|
val kotlinExtension = project.kotlinExtension as KotlinJsProjectExtension
|
||||||
configureDefaultVersionsResolutionStrategy(project, kotlinPluginVersion)
|
configureDefaultVersionsResolutionStrategy(project, kotlinPluginVersion)
|
||||||
|
|
||||||
val irPreset = if (mixedMode)
|
kotlinExtension.apply {
|
||||||
KotlinJsIrSingleTargetPreset(project, kotlinPluginVersion, mixedMode)
|
irPreset = KotlinJsIrSingleTargetPreset(project, kotlinPluginVersion)
|
||||||
else null
|
legacyPreset = KotlinJsSingleTargetPreset(project, kotlinPluginVersion)
|
||||||
|
}
|
||||||
val target = KotlinJsSingleTargetPreset(project, kotlinPluginVersion, irPreset)
|
|
||||||
.createTarget(
|
|
||||||
lowerCamelCaseName(
|
|
||||||
"js",
|
|
||||||
irPreset?.let { JsCompilerType.legacy.name }
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
kotlinExtension.target = target
|
|
||||||
|
|
||||||
project.components.addAll(target.components)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -182,7 +182,7 @@ constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun useCommonJs() {
|
override fun useCommonJs() {
|
||||||
compilations.all {
|
compilations.all {
|
||||||
it.compileKotlinTask.kotlinOptions {
|
it.compileKotlinTask.kotlinOptions {
|
||||||
moduleKind = "commonjs"
|
moduleKind = "commonjs"
|
||||||
|
|||||||
+6
-7
@@ -14,18 +14,19 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.removeCapitalizedJsCompilerSuffix
|
import org.jetbrains.kotlin.gradle.plugin.removeCapitalizedJsCompilerSuffix
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
|
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTargetConfigurator
|
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTargetConfigurator
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrSingleTargetPreset
|
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTargetPreset
|
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTargetPreset
|
||||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||||
|
|
||||||
open class KotlinJsTargetPreset(
|
open class KotlinJsTargetPreset(
|
||||||
project: Project,
|
project: Project,
|
||||||
kotlinPluginVersion: String,
|
kotlinPluginVersion: String
|
||||||
val irPreset: KotlinJsIrTargetPreset?
|
|
||||||
) : KotlinOnlyTargetPreset<KotlinJsTarget, KotlinJsCompilation>(
|
) : KotlinOnlyTargetPreset<KotlinJsTarget, KotlinJsCompilation>(
|
||||||
project,
|
project,
|
||||||
kotlinPluginVersion
|
kotlinPluginVersion
|
||||||
) {
|
) {
|
||||||
|
var irPreset: KotlinJsIrTargetPreset? = null
|
||||||
|
internal set
|
||||||
|
|
||||||
override val platformType: KotlinPlatformType
|
override val platformType: KotlinPlatformType
|
||||||
get() = KotlinPlatformType.js
|
get() = KotlinPlatformType.js
|
||||||
|
|
||||||
@@ -63,12 +64,10 @@ open class KotlinJsTargetPreset(
|
|||||||
|
|
||||||
class KotlinJsSingleTargetPreset(
|
class KotlinJsSingleTargetPreset(
|
||||||
project: Project,
|
project: Project,
|
||||||
kotlinPluginVersion: String,
|
kotlinPluginVersion: String
|
||||||
irPreset: KotlinJsIrSingleTargetPreset?
|
|
||||||
) : KotlinJsTargetPreset(
|
) : KotlinJsTargetPreset(
|
||||||
project,
|
project,
|
||||||
kotlinPluginVersion,
|
kotlinPluginVersion
|
||||||
irPreset
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
// In a Kotlin/JS single-platform project, we don't need any disambiguation suffixes or prefixes in the names:
|
// In a Kotlin/JS single-platform project, we don't need any disambiguation suffixes or prefixes in the names:
|
||||||
|
|||||||
+2
@@ -52,6 +52,8 @@ interface KotlinJsTargetDsl : KotlinTarget {
|
|||||||
|
|
||||||
fun produceExecutable()
|
fun produceExecutable()
|
||||||
|
|
||||||
|
fun useCommonJs()
|
||||||
|
|
||||||
val testRuns: NamedDomainObjectContainer<KotlinJsReportAggregatingTestRun>
|
val testRuns: NamedDomainObjectContainer<KotlinJsReportAggregatingTestRun>
|
||||||
|
|
||||||
// Need to compatibility when users use KotlinJsCompilation specific in build script
|
// Need to compatibility when users use KotlinJsCompilation specific in build script
|
||||||
|
|||||||
-37
@@ -1,37 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2019 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.gradle.targets.js.ir
|
|
||||||
|
|
||||||
import org.gradle.api.Plugin
|
|
||||||
import org.gradle.api.Project
|
|
||||||
import org.gradle.api.plugins.JavaBasePlugin
|
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJsIrProjectExtension
|
|
||||||
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.configureDefaultVersionsResolutionStrategy
|
|
||||||
import org.jetbrains.kotlin.gradle.utils.checkGradleCompatibility
|
|
||||||
|
|
||||||
open class KotlinJsIrPlugin(
|
|
||||||
private val kotlinPluginVersion: String
|
|
||||||
) : Plugin<Project> {
|
|
||||||
|
|
||||||
override fun apply(project: Project) {
|
|
||||||
// TODO get rid of this plugin, too? Use the 'base' plugin instead?
|
|
||||||
// in fact, the attributes schema of the Java base plugin may be required to consume non-MPP Kotlin/JS libs,
|
|
||||||
// so investigation is needed
|
|
||||||
project.plugins.apply(JavaBasePlugin::class.java)
|
|
||||||
|
|
||||||
checkGradleCompatibility()
|
|
||||||
|
|
||||||
val kotlinExtension = project.kotlinExtension as KotlinJsIrProjectExtension
|
|
||||||
configureDefaultVersionsResolutionStrategy(project, kotlinPluginVersion)
|
|
||||||
|
|
||||||
val target = KotlinJsIrSingleTargetPreset(project, kotlinPluginVersion, false).createTarget("js")
|
|
||||||
|
|
||||||
kotlinExtension.target = target
|
|
||||||
|
|
||||||
project.components.addAll(target.components)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+1
-1
@@ -128,7 +128,7 @@ constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun useCommonJs() {
|
override fun useCommonJs() {
|
||||||
compilations.all {
|
compilations.all {
|
||||||
it.compileKotlinTask.configureCommonJsOptions()
|
it.compileKotlinTask.configureCommonJsOptions()
|
||||||
|
|
||||||
|
|||||||
+5
-5
@@ -16,12 +16,13 @@ import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
|||||||
|
|
||||||
open class KotlinJsIrTargetPreset(
|
open class KotlinJsIrTargetPreset(
|
||||||
project: Project,
|
project: Project,
|
||||||
kotlinPluginVersion: String,
|
kotlinPluginVersion: String
|
||||||
private val mixedMode: Boolean
|
|
||||||
) : KotlinOnlyTargetPreset<KotlinJsIrTarget, KotlinJsIrCompilation>(
|
) : KotlinOnlyTargetPreset<KotlinJsIrTarget, KotlinJsIrCompilation>(
|
||||||
project,
|
project,
|
||||||
kotlinPluginVersion
|
kotlinPluginVersion
|
||||||
) {
|
) {
|
||||||
|
internal var mixedMode: Boolean? = null
|
||||||
|
|
||||||
override val platformType: KotlinPlatformType
|
override val platformType: KotlinPlatformType
|
||||||
get() = KotlinPlatformType.js
|
get() = KotlinPlatformType.js
|
||||||
|
|
||||||
@@ -50,10 +51,9 @@ open class KotlinJsIrTargetPreset(
|
|||||||
|
|
||||||
class KotlinJsIrSingleTargetPreset(
|
class KotlinJsIrSingleTargetPreset(
|
||||||
project: Project,
|
project: Project,
|
||||||
kotlinPluginVersion: String,
|
kotlinPluginVersion: String
|
||||||
mixedMode: Boolean
|
|
||||||
) :
|
) :
|
||||||
KotlinJsIrTargetPreset(project, kotlinPluginVersion, mixedMode) {
|
KotlinJsIrTargetPreset(project, kotlinPluginVersion) {
|
||||||
|
|
||||||
// In a Kotlin/JS single-platform project, we don't need any disambiguation suffixes or prefixes in the names:
|
// In a Kotlin/JS single-platform project, we don't need any disambiguation suffixes or prefixes in the names:
|
||||||
override fun provideTargetDisambiguationClassifier(target: KotlinOnlyTarget<KotlinJsIrCompilation>): String? = null
|
override fun provideTargetDisambiguationClassifier(target: KotlinOnlyTarget<KotlinJsIrCompilation>): String? = null
|
||||||
|
|||||||
Reference in New Issue
Block a user