[Gradle, JS] Legacy tooling work with binaries and throw error on it
This commit is contained in:
+10
-4
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.gradle.targets.js
|
|||||||
import org.gradle.api.NamedDomainObjectContainer
|
import org.gradle.api.NamedDomainObjectContainer
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.tasks.TaskProvider
|
import org.gradle.api.tasks.TaskProvider
|
||||||
|
import org.gradle.util.WrapUtil
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
||||||
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
||||||
import org.jetbrains.kotlin.gradle.plugin.*
|
import org.jetbrains.kotlin.gradle.plugin.*
|
||||||
@@ -16,8 +17,8 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetComponent
|
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetComponent
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetWithTests
|
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetWithTests
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinBinaryContainer
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTarget
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.PRIMARY_SINGLE_COMPONENT_NAME
|
import org.jetbrains.kotlin.gradle.plugin.mpp.PRIMARY_SINGLE_COMPONENT_NAME
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBrowserDsl
|
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBrowserDsl
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsNodeDsl
|
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsNodeDsl
|
||||||
@@ -27,6 +28,7 @@ import org.jetbrains.kotlin.gradle.targets.js.ir.JsBinary
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.*
|
import org.jetbrains.kotlin.gradle.plugin.mpp.*
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.*
|
import org.jetbrains.kotlin.gradle.targets.js.dsl.*
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.*
|
import org.jetbrains.kotlin.gradle.targets.js.dsl.*
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.ir.JsBinary
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsBinaryContainer
|
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsBinaryContainer
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
|
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinBrowserJs
|
import org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinBrowserJs
|
||||||
@@ -45,7 +47,7 @@ constructor(
|
|||||||
project: Project,
|
project: Project,
|
||||||
platformType: KotlinPlatformType
|
platformType: KotlinPlatformType
|
||||||
) :
|
) :
|
||||||
KotlinOnlyTarget<KotlinJsCompilation>(project, platformType),
|
KotlinBinaryContainer<KotlinJsCompilation, KotlinJsBinaryContainer>(project, platformType),
|
||||||
KotlinTargetWithTests<JsAggregatingExecutionSource, KotlinJsReportAggregatingTestRun>,
|
KotlinTargetWithTests<JsAggregatingExecutionSource, KotlinJsReportAggregatingTestRun>,
|
||||||
KotlinJsTargetDsl,
|
KotlinJsTargetDsl,
|
||||||
KotlinJsSubTargetContainerDsl {
|
KotlinJsSubTargetContainerDsl {
|
||||||
@@ -93,8 +95,12 @@ constructor(
|
|||||||
var producingType: KotlinJsProducingType? = null
|
var producingType: KotlinJsProducingType? = null
|
||||||
|
|
||||||
@Deprecated("Use produceExecutable instead", ReplaceWith("produceExecutable()"))
|
@Deprecated("Use produceExecutable instead", ReplaceWith("produceExecutable()"))
|
||||||
override val binaries: KotlinJsBinaryContainer =
|
override val binaries: KotlinJsBinaryContainer
|
||||||
throw IllegalStateException("binaries is useless for legacy compiler. Use produceExecutable instead")
|
get() = project.objects.newInstance(
|
||||||
|
KotlinJsBinaryContainer::class.java,
|
||||||
|
this,
|
||||||
|
WrapUtil.toDomainObjectSet(JsBinary::class.java)
|
||||||
|
)
|
||||||
|
|
||||||
var irTarget: KotlinJsIrTarget? = null
|
var irTarget: KotlinJsIrTarget? = null
|
||||||
|
|
||||||
|
|||||||
+13
-6
@@ -11,6 +11,7 @@ import org.gradle.api.plugins.ExtensionAware
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
|
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinBinaryContainer
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinBinaryContainer
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.BuildVariantKind
|
import org.jetbrains.kotlin.gradle.targets.js.dsl.BuildVariantKind
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.BuildVariantKind.DEVELOPMENT
|
import org.jetbrains.kotlin.gradle.targets.js.dsl.BuildVariantKind.DEVELOPMENT
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.BuildVariantKind.PRODUCTION
|
import org.jetbrains.kotlin.gradle.targets.js.dsl.BuildVariantKind.PRODUCTION
|
||||||
@@ -22,7 +23,7 @@ import javax.inject.Inject
|
|||||||
open class KotlinJsBinaryContainer
|
open class KotlinJsBinaryContainer
|
||||||
@Inject
|
@Inject
|
||||||
constructor(
|
constructor(
|
||||||
val target: KotlinBinaryContainer<KotlinJsIrCompilation, KotlinJsBinaryContainer>,
|
val target: KotlinBinaryContainer<KotlinJsCompilation, KotlinJsBinaryContainer>,
|
||||||
backingContainer: DomainObjectSet<JsBinary>
|
backingContainer: DomainObjectSet<JsBinary>
|
||||||
) : DomainObjectSet<JsBinary> by backingContainer {
|
) : DomainObjectSet<JsBinary> by backingContainer {
|
||||||
val project: Project
|
val project: Project
|
||||||
@@ -30,12 +31,18 @@ constructor(
|
|||||||
|
|
||||||
private val binaryNames = mutableSetOf<String>()
|
private val binaryNames = mutableSetOf<String>()
|
||||||
|
|
||||||
private val defaultCompilation: KotlinJsIrCompilation
|
private val defaultCompilation: KotlinJsCompilation
|
||||||
get() = target.compilations.getByName(KotlinCompilation.MAIN_COMPILATION_NAME)
|
get() = target.compilations.getByName(KotlinCompilation.MAIN_COMPILATION_NAME)
|
||||||
|
|
||||||
fun executable(
|
fun executable(
|
||||||
compilation: KotlinJsIrCompilation = defaultCompilation
|
compilation: KotlinJsCompilation = defaultCompilation
|
||||||
) {
|
) {
|
||||||
|
if (compilation !is KotlinJsIrCompilation) {
|
||||||
|
throw IllegalArgumentException(
|
||||||
|
"Unable to create executable for $compilation. Use IR compiler (kotlin.js.compiler=true) instead."
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
(target as KotlinJsSubTargetContainerDsl).whenBrowserConfigured {
|
(target as KotlinJsSubTargetContainerDsl).whenBrowserConfigured {
|
||||||
(this as KotlinJsIrSubTarget).produceExecutable()
|
(this as KotlinJsIrSubTarget).produceExecutable()
|
||||||
}
|
}
|
||||||
@@ -47,7 +54,7 @@ constructor(
|
|||||||
compilation.binaries.executableInternal(compilation)
|
compilation.binaries.executableInternal(compilation)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun executableInternal(compilation: KotlinJsIrCompilation) = createBinaries(
|
internal fun executableInternal(compilation: KotlinJsCompilation) = createBinaries(
|
||||||
compilation = compilation,
|
compilation = compilation,
|
||||||
jsBinaryType = JsBinaryType.EXECUTABLE,
|
jsBinaryType = JsBinaryType.EXECUTABLE,
|
||||||
create = ::Executable
|
create = ::Executable
|
||||||
@@ -60,7 +67,7 @@ constructor(
|
|||||||
.single()
|
.single()
|
||||||
|
|
||||||
private fun <T : JsBinary> createBinaries(
|
private fun <T : JsBinary> createBinaries(
|
||||||
compilation: KotlinJsIrCompilation,
|
compilation: KotlinJsCompilation,
|
||||||
buildVariantKinds: Collection<BuildVariantKind> = listOf(PRODUCTION, DEVELOPMENT),
|
buildVariantKinds: Collection<BuildVariantKind> = listOf(PRODUCTION, DEVELOPMENT),
|
||||||
jsBinaryType: JsBinaryType,
|
jsBinaryType: JsBinaryType,
|
||||||
create: (target: KotlinTarget, name: String, buildVariantKind: BuildVariantKind) -> T
|
create: (target: KotlinTarget, name: String, buildVariantKind: BuildVariantKind) -> T
|
||||||
@@ -87,7 +94,7 @@ constructor(
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
internal fun generateBinaryName(
|
internal fun generateBinaryName(
|
||||||
compilation: KotlinJsIrCompilation,
|
compilation: KotlinJsCompilation,
|
||||||
buildVariantKind: BuildVariantKind,
|
buildVariantKind: BuildVariantKind,
|
||||||
jsBinaryType: JsBinaryType
|
jsBinaryType: JsBinaryType
|
||||||
) =
|
) =
|
||||||
|
|||||||
Reference in New Issue
Block a user