[Gradle, JS] Use binaries for wasi with KotlinJsIrCompilation

This commit is contained in:
Ilya Goncharov
2023-11-20 17:08:52 +01:00
committed by Space Team
parent 5ea59f57d6
commit 957d3c5610
3 changed files with 19 additions and 6 deletions
@@ -25,7 +25,8 @@ import javax.inject.Inject
open class KotlinJsCompilation @Inject internal constructor( open class KotlinJsCompilation @Inject internal constructor(
compilation: KotlinCompilationImpl compilation: KotlinCompilationImpl
) : AbstractKotlinCompilationToRunnableFiles<KotlinJsOptions>(compilation) { ) : AbstractKotlinCompilationToRunnableFiles<KotlinJsOptions>(compilation),
HasBinaries<KotlinJsBinaryContainer> {
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
final override val compilerOptions: HasCompilerOptions<KotlinJsCompilerOptions> final override val compilerOptions: HasCompilerOptions<KotlinJsCompilerOptions>
@@ -39,7 +40,7 @@ open class KotlinJsCompilation @Inject internal constructor(
configure.execute(compilerOptions.options) configure.execute(compilerOptions.options)
} }
val binaries: KotlinJsBinaryContainer = override val binaries: KotlinJsBinaryContainer =
compilation.target.project.objects.newInstance( compilation.target.project.objects.newInstance(
KotlinJsBinaryContainer::class.java, KotlinJsBinaryContainer::class.java,
compilation.target, compilation.target,
@@ -10,6 +10,7 @@ import org.gradle.api.GradleException
import org.gradle.api.NamedDomainObjectContainer import org.gradle.api.NamedDomainObjectContainer
import org.jetbrains.kotlin.gradle.dsl.KotlinJsDce import org.jetbrains.kotlin.gradle.dsl.KotlinJsDce
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.HasBinaries
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsPlatformTestRun import org.jetbrains.kotlin.gradle.targets.js.KotlinJsPlatformTestRun
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsReportAggregatingTestRun import org.jetbrains.kotlin.gradle.targets.js.KotlinJsReportAggregatingTestRun
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsBinaryContainer import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsBinaryContainer
@@ -33,7 +34,10 @@ interface KotlinJsSubTargetContainerDsl : KotlinTarget {
fun whenBrowserConfigured(body: KotlinJsBrowserDsl.() -> Unit) fun whenBrowserConfigured(body: KotlinJsBrowserDsl.() -> Unit)
} }
interface KotlinJsTargetDsl : KotlinTarget, KotlinTargetWithNodeJsDsl { interface KotlinJsTargetDsl :
KotlinTarget,
KotlinTargetWithNodeJsDsl,
HasBinaries<KotlinJsBinaryContainer>{
var moduleName: String? var moduleName: String?
fun browser() = browser { } fun browser() = browser { }
@@ -55,8 +59,6 @@ interface KotlinJsTargetDsl : KotlinTarget, KotlinTargetWithNodeJsDsl {
fun generateTypeScriptDefinitions() fun generateTypeScriptDefinitions()
val binaries: KotlinJsBinaryContainer
@Deprecated( @Deprecated(
message = "produceExecutable() was changed on binaries.executable()", message = "produceExecutable() was changed on binaries.executable()",
replaceWith = ReplaceWith("binaries.executable()"), replaceWith = ReplaceWith("binaries.executable()"),
@@ -70,6 +72,8 @@ interface KotlinJsTargetDsl : KotlinTarget, KotlinTargetWithNodeJsDsl {
// Need to compatibility when users use KotlinJsCompilation specific in build script // Need to compatibility when users use KotlinJsCompilation specific in build script
override val compilations: NamedDomainObjectContainer<KotlinJsIrCompilation> override val compilations: NamedDomainObjectContainer<KotlinJsIrCompilation>
override val binaries: KotlinJsBinaryContainer
} }
interface KotlinTargetWithNodeJsDsl { interface KotlinTargetWithNodeJsDsl {
@@ -6,11 +6,15 @@
package org.jetbrains.kotlin.gradle.targets.js.dsl package org.jetbrains.kotlin.gradle.targets.js.dsl
import org.gradle.api.Action import org.gradle.api.Action
import org.gradle.api.NamedDomainObjectContainer
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.HasBinaries
import org.jetbrains.kotlin.gradle.targets.js.KotlinWasmTargetType import org.jetbrains.kotlin.gradle.targets.js.KotlinWasmTargetType
import org.jetbrains.kotlin.gradle.targets.js.binaryen.BinaryenExec import org.jetbrains.kotlin.gradle.targets.js.binaryen.BinaryenExec
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsBinaryContainer
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation
interface KotlinWasmTargetDsl : KotlinTarget { interface KotlinWasmTargetDsl : KotlinTarget, HasBinaries<KotlinJsBinaryContainer> {
val wasmTargetType: KotlinWasmTargetType? val wasmTargetType: KotlinWasmTargetType?
fun applyBinaryen() = applyBinaryen { } fun applyBinaryen() = applyBinaryen { }
@@ -20,4 +24,8 @@ interface KotlinWasmTargetDsl : KotlinTarget {
fn.execute(this) fn.execute(this)
} }
} }
override val compilations: NamedDomainObjectContainer<KotlinJsIrCompilation>
override val binaries: KotlinJsBinaryContainer
} }