[Gradle] Introduce compilerOptions for Kotlin js target
KotlinJsIrTarget now exposes experimental compiler options DSL that are passed as a convention into target compilations compiler options. ^KT-57292 In Progress
This commit is contained in:
committed by
Space Team
parent
a158d09768
commit
a40e59306a
+20
-2
@@ -5,9 +5,8 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl
|
package org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl
|
||||||
|
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompilerOptions
|
import org.jetbrains.kotlin.gradle.dsl.*
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompilerOptionsHelper
|
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompilerOptionsHelper
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinNativeCompilerOptions
|
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinNativeCompilerOptionsHelper
|
import org.jetbrains.kotlin.gradle.dsl.KotlinNativeCompilerOptionsHelper
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.DecoratedKotlinCompilation
|
import org.jetbrains.kotlin.gradle.plugin.mpp.DecoratedKotlinCompilation
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.KotlinCompilationImplFactory
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.KotlinCompilationImplFactory
|
||||||
@@ -50,3 +49,22 @@ internal class KotlinCompilationNativeCompilerOptionsFromTargetConfigurator(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal class KotlinCompilationJsCompilerOptionsFromTargetConfigurator(
|
||||||
|
private val targetCompilerOptions: KotlinJsCompilerOptions
|
||||||
|
) : KotlinCompilationImplFactory.PostConfigure {
|
||||||
|
override fun configure(compilation: DecoratedKotlinCompilation<*>) {
|
||||||
|
val jsCompilerOptions = compilation.compilerOptions.options as KotlinJsCompilerOptions
|
||||||
|
KotlinJsCompilerOptionsHelper.syncOptionsAsConvention(
|
||||||
|
targetCompilerOptions,
|
||||||
|
jsCompilerOptions
|
||||||
|
)
|
||||||
|
|
||||||
|
jsCompilerOptions.moduleName.convention(
|
||||||
|
moduleNameForCompilation(
|
||||||
|
compilation.compilationName,
|
||||||
|
targetCompilerOptions.moduleName
|
||||||
|
).orElse(compilation.moduleNameForCompilation())
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
+5
-2
@@ -9,8 +9,7 @@ import org.gradle.api.NamedDomainObjectContainer
|
|||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.Task
|
import org.gradle.api.Task
|
||||||
import org.gradle.api.tasks.TaskProvider
|
import org.gradle.api.tasks.TaskProvider
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
import org.jetbrains.kotlin.gradle.dsl.*
|
||||||
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.*
|
import org.jetbrains.kotlin.gradle.plugin.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.AbstractKotlinTargetConfigurator.Companion.runTaskNameSuffix
|
import org.jetbrains.kotlin.gradle.plugin.AbstractKotlinTargetConfigurator.Companion.runTaskNameSuffix
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation.Companion.MAIN_COMPILATION_NAME
|
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation.Companion.MAIN_COMPILATION_NAME
|
||||||
@@ -32,6 +31,7 @@ import org.jetbrains.kotlin.gradle.testing.internal.KotlinTestReport
|
|||||||
import org.jetbrains.kotlin.gradle.testing.testTaskName
|
import org.jetbrains.kotlin.gradle.testing.testTaskName
|
||||||
import org.jetbrains.kotlin.gradle.utils.dashSeparatedName
|
import org.jetbrains.kotlin.gradle.utils.dashSeparatedName
|
||||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.newInstance
|
||||||
import org.jetbrains.kotlin.gradle.utils.setProperty
|
import org.jetbrains.kotlin.gradle.utils.setProperty
|
||||||
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
|
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
|
||||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||||
@@ -249,4 +249,7 @@ constructor(
|
|||||||
override fun generateTypeScriptDefinitions() {
|
override fun generateTypeScriptDefinitions() {
|
||||||
project.logger.warn("Legacy compiler does not support generation of TypeScript Definitions")
|
project.logger.warn("Legacy compiler does not support generation of TypeScript Definitions")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val compilerOptions: KotlinJsCompilerOptions =
|
||||||
|
project.objects.newInstance<KotlinJsCompilerOptionsDefault>()
|
||||||
}
|
}
|
||||||
+15
@@ -8,6 +8,8 @@ package org.jetbrains.kotlin.gradle.targets.js.dsl
|
|||||||
import org.gradle.api.Action
|
import org.gradle.api.Action
|
||||||
import org.gradle.api.GradleException
|
import org.gradle.api.GradleException
|
||||||
import org.gradle.api.NamedDomainObjectContainer
|
import org.gradle.api.NamedDomainObjectContainer
|
||||||
|
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.KotlinJsCompilerOptions
|
||||||
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.KotlinJsCompilation
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
||||||
@@ -64,6 +66,19 @@ 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<out KotlinJsCompilation>
|
override val compilations: NamedDomainObjectContainer<out KotlinJsCompilation>
|
||||||
|
|
||||||
|
@ExperimentalKotlinGradlePluginApi
|
||||||
|
override val compilerOptions: KotlinJsCompilerOptions
|
||||||
|
|
||||||
|
@ExperimentalKotlinGradlePluginApi
|
||||||
|
fun compilerOptions(configure: KotlinJsCompilerOptions.() -> Unit) {
|
||||||
|
configure(compilerOptions)
|
||||||
|
}
|
||||||
|
|
||||||
|
@ExperimentalKotlinGradlePluginApi
|
||||||
|
fun compilerOptions(configure: Action<KotlinJsCompilerOptions>) {
|
||||||
|
configure.execute(compilerOptions)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
interface KotlinTargetWithNodeJsDsl {
|
interface KotlinTargetWithNodeJsDsl {
|
||||||
|
|||||||
+13
-4
@@ -7,16 +7,21 @@ package org.jetbrains.kotlin.gradle.targets.js.ir
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinCompilationFactory
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinCompilationFactory
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTarget
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.DefaultKotlinCompilationFriendPathsResolver
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.DefaultKotlinCompilationFriendPathsResolver
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.DefaultKotlinCompilationPreConfigure
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.DefaultKotlinCompilationPreConfigure
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.*
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.isMain
|
import org.jetbrains.kotlin.gradle.plugin.mpp.isMain
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.sourcesJarTask
|
import org.jetbrains.kotlin.gradle.plugin.mpp.sourcesJarTask
|
||||||
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
|
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.JsIrCompilationSourceSetsContainerFactory
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.JsKotlinCompilationDependencyConfigurationsFactory
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.DefaultKotlinCompilationPostConfigure
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinCompilationJsCompilerOptionsFromTargetConfigurator
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.KotlinCompilationImplFactory
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.KotlinJsCompilerOptionsFactory
|
||||||
|
|
||||||
class KotlinJsIrCompilationFactory internal constructor(
|
class KotlinJsIrCompilationFactory internal constructor(
|
||||||
override val target: KotlinOnlyTarget<KotlinJsIrCompilation>,
|
override val target: KotlinJsIrTarget,
|
||||||
) : KotlinCompilationFactory<KotlinJsIrCompilation> {
|
) : KotlinCompilationFactory<KotlinJsIrCompilation> {
|
||||||
override val itemClass: Class<KotlinJsIrCompilation>
|
override val itemClass: Class<KotlinJsIrCompilation>
|
||||||
get() = KotlinJsIrCompilation::class.java
|
get() = KotlinJsIrCompilation::class.java
|
||||||
@@ -24,7 +29,7 @@ class KotlinJsIrCompilationFactory internal constructor(
|
|||||||
private val compilationImplFactory: KotlinCompilationImplFactory = KotlinCompilationImplFactory(
|
private val compilationImplFactory: KotlinCompilationImplFactory = KotlinCompilationImplFactory(
|
||||||
compilerOptionsFactory = KotlinJsCompilerOptionsFactory,
|
compilerOptionsFactory = KotlinJsCompilerOptionsFactory,
|
||||||
compilationFriendPathsResolver = DefaultKotlinCompilationFriendPathsResolver(
|
compilationFriendPathsResolver = DefaultKotlinCompilationFriendPathsResolver(
|
||||||
friendArtifactResolver = DefaultKotlinCompilationFriendPathsResolver.FriendArtifactResolver { _ ->
|
friendArtifactResolver = { _ ->
|
||||||
target.project.files()
|
target.project.files()
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
@@ -36,7 +41,11 @@ class KotlinJsIrCompilationFactory internal constructor(
|
|||||||
?: compilation.target.targetName.toLowerCaseAsciiOnly()
|
?: compilation.target.targetName.toLowerCaseAsciiOnly()
|
||||||
sourcesJarTask(compilation, compilation.target.targetName, artifactNameAppendix)
|
sourcesJarTask(compilation, compilation.target.targetName, artifactNameAppendix)
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
postConfigureAction = KotlinCompilationImplFactory.PostConfigure.composite(
|
||||||
|
DefaultKotlinCompilationPostConfigure,
|
||||||
|
KotlinCompilationJsCompilerOptionsFromTargetConfigurator(target.compilerOptions)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
override fun create(name: String): KotlinJsIrCompilation = target.project.objects.newInstance(
|
override fun create(name: String): KotlinJsIrCompilation = target.project.objects.newInstance(
|
||||||
|
|||||||
+20
@@ -13,6 +13,9 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinJsOptions
|
|||||||
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.*
|
||||||
|
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.*
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.KotlinJsCompilerOptionsDefault
|
||||||
import org.jetbrains.kotlin.gradle.plugin.AbstractKotlinTargetConfigurator.Companion.runTaskNameSuffix
|
import org.jetbrains.kotlin.gradle.plugin.AbstractKotlinTargetConfigurator.Companion.runTaskNameSuffix
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation.Companion.MAIN_COMPILATION_NAME
|
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation.Companion.MAIN_COMPILATION_NAME
|
||||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
||||||
@@ -23,15 +26,18 @@ import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
|
|||||||
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.dsl.*
|
import org.jetbrains.kotlin.gradle.targets.js.dsl.*
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTargetConfigurator.Companion.configureJsDefaultOptions
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
|
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmResolverPlugin
|
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmResolverPlugin
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
|
import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.typescript.TypeScriptValidationTask
|
import org.jetbrains.kotlin.gradle.targets.js.typescript.TypeScriptValidationTask
|
||||||
import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask
|
import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask
|
||||||
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.*
|
||||||
import org.jetbrains.kotlin.gradle.utils.dashSeparatedName
|
import org.jetbrains.kotlin.gradle.utils.dashSeparatedName
|
||||||
import org.jetbrains.kotlin.gradle.utils.decamelize
|
import org.jetbrains.kotlin.gradle.utils.decamelize
|
||||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.newInstance
|
||||||
import org.jetbrains.kotlin.gradle.utils.setProperty
|
import org.jetbrains.kotlin.gradle.utils.setProperty
|
||||||
import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly
|
import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly
|
||||||
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
|
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
|
||||||
@@ -389,6 +395,20 @@ constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ExperimentalKotlinGradlePluginApi
|
||||||
|
override val compilerOptions: KotlinJsCompilerOptions = project.objects
|
||||||
|
.newInstance<KotlinJsCompilerOptionsDefault>()
|
||||||
|
.configureExperimentalTryK2(project)
|
||||||
|
.apply {
|
||||||
|
configureJsDefaultOptions()
|
||||||
|
|
||||||
|
if (platformType == KotlinPlatformType.wasm) {
|
||||||
|
freeCompilerArgs.add(WASM_BACKEND)
|
||||||
|
}
|
||||||
|
|
||||||
|
freeCompilerArgs.add(DISABLE_PRE_IR)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun KotlinJsIrTarget.wasmDecamelizedDefaultNameOrNull(): String? = if (platformType == KotlinPlatformType.wasm) {
|
fun KotlinJsIrTarget.wasmDecamelizedDefaultNameOrNull(): String? = if (platformType == KotlinPlatformType.wasm) {
|
||||||
|
|||||||
+10
-20
@@ -14,15 +14,12 @@ import org.jetbrains.kotlin.gradle.dsl.JsSourceMapEmbedMode
|
|||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJsCompilerOptions
|
import org.jetbrains.kotlin.gradle.dsl.KotlinJsCompilerOptions
|
||||||
import org.jetbrains.kotlin.gradle.plugin.*
|
import org.jetbrains.kotlin.gradle.plugin.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.isMain
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.libsDirectory
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.libsDirectory
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.sourcesJarTask
|
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsReportAggregatingTestRun
|
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsReportAggregatingTestRun
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
|
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
|
||||||
import org.jetbrains.kotlin.gradle.testing.internal.kotlinTestRegistry
|
import org.jetbrains.kotlin.gradle.testing.internal.kotlinTestRegistry
|
||||||
import org.jetbrains.kotlin.gradle.testing.testTaskName
|
import org.jetbrains.kotlin.gradle.testing.testTaskName
|
||||||
import org.jetbrains.kotlin.gradle.utils.decamelize
|
import org.jetbrains.kotlin.gradle.utils.decamelize
|
||||||
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
|
|
||||||
|
|
||||||
open class KotlinJsIrTargetConfigurator :
|
open class KotlinJsIrTargetConfigurator :
|
||||||
KotlinOnlyTargetConfigurator<KotlinJsIrCompilation, KotlinJsIrTarget>(true),
|
KotlinOnlyTargetConfigurator<KotlinJsIrCompilation, KotlinJsIrTarget>(true),
|
||||||
@@ -91,33 +88,18 @@ open class KotlinJsIrTargetConfigurator :
|
|||||||
override fun configureCompilations(target: KotlinJsIrTarget) {
|
override fun configureCompilations(target: KotlinJsIrTarget) {
|
||||||
super.configureCompilations(target)
|
super.configureCompilations(target)
|
||||||
|
|
||||||
|
|
||||||
target.compilations.all { compilation ->
|
target.compilations.all { compilation ->
|
||||||
compilation.compilerOptions.configure {
|
|
||||||
configureOptions()
|
|
||||||
|
|
||||||
if (target.platformType == KotlinPlatformType.wasm) {
|
|
||||||
freeCompilerArgs.add(WASM_BACKEND)
|
|
||||||
}
|
|
||||||
|
|
||||||
freeCompilerArgs.add(DISABLE_PRE_IR)
|
|
||||||
}
|
|
||||||
|
|
||||||
compilation.binaries
|
compilation.binaries
|
||||||
.withType(JsIrBinary::class.java)
|
.withType(JsIrBinary::class.java)
|
||||||
.all { binary ->
|
.all { binary ->
|
||||||
binary.linkTask.configure { linkTask ->
|
binary.linkTask.configure { linkTask ->
|
||||||
linkTask.compilerOptions.configureOptions()
|
linkTask.compilerOptions.configureJsDefaultOptions()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun KotlinJsCompilerOptions.configureOptions() {
|
|
||||||
moduleKind.set(JsModuleKind.MODULE_UMD)
|
|
||||||
sourceMap.set(true)
|
|
||||||
sourceMapEmbedSources.set(JsSourceMapEmbedMode.SOURCE_MAP_SOURCE_CONTENT_NEVER)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun defineConfigurationsForTarget(target: KotlinJsIrTarget) {
|
override fun defineConfigurationsForTarget(target: KotlinJsIrTarget) {
|
||||||
super.defineConfigurationsForTarget(target)
|
super.defineConfigurationsForTarget(target)
|
||||||
|
|
||||||
@@ -134,4 +116,12 @@ open class KotlinJsIrTargetConfigurator :
|
|||||||
attributes.attribute(KotlinPlatformType.attribute, KotlinPlatformType.common)
|
attributes.attribute(KotlinPlatformType.attribute, KotlinPlatformType.common)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal companion object {
|
||||||
|
internal fun KotlinJsCompilerOptions.configureJsDefaultOptions() {
|
||||||
|
moduleKind.set(JsModuleKind.MODULE_UMD)
|
||||||
|
sourceMap.set(true)
|
||||||
|
sourceMapEmbedSources.set(JsSourceMapEmbedMode.SOURCE_MAP_SOURCE_CONTENT_NEVER)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+50
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.gradle.unitTests
|
package org.jetbrains.kotlin.gradle.unitTests
|
||||||
|
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.KotlinJsCompilerOptions
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinNativeCompilerOptions
|
import org.jetbrains.kotlin.gradle.dsl.KotlinNativeCompilerOptions
|
||||||
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
|
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask
|
||||||
@@ -74,7 +75,56 @@ class ProjectCompilerOptionsTests {
|
|||||||
assertEquals(false, project.kotlinNativeTask("compileKotlinLinuxX64").compilerOptions.progressiveMode.get())
|
assertEquals(false, project.kotlinNativeTask("compileKotlinLinuxX64").compilerOptions.progressiveMode.get())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun jsTargetCompilerOptionsDsl() {
|
||||||
|
val project = buildProjectWithMPP {
|
||||||
|
with(multiplatformExtension) {
|
||||||
|
js {
|
||||||
|
compilerOptions {
|
||||||
|
suppressWarnings.set(true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
applyDefaultHierarchyTemplate()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
project.evaluate()
|
||||||
|
|
||||||
|
assertEquals(true, project.kotlinJsTask("compileKotlinJs").compilerOptions.suppressWarnings.get())
|
||||||
|
assertEquals(true, project.kotlinJsTask("compileTestKotlinJs").compilerOptions.suppressWarnings.get())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun jsTaskOptionsOverridesTargetOptions() {
|
||||||
|
val project = buildProjectWithMPP {
|
||||||
|
tasks.withType<KotlinCompilationTask<*>>().configureEach {
|
||||||
|
if (it.name == "compileKotlinJs") {
|
||||||
|
it.compilerOptions.suppressWarnings.set(false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
with(multiplatformExtension) {
|
||||||
|
js {
|
||||||
|
compilerOptions {
|
||||||
|
suppressWarnings.set(true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
applyDefaultHierarchyTemplate()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
project.evaluate()
|
||||||
|
|
||||||
|
assertEquals(false, project.kotlinJsTask("compileKotlinJs").compilerOptions.suppressWarnings.get())
|
||||||
|
}
|
||||||
|
|
||||||
private fun Project.kotlinNativeTask(name: String): KotlinCompilationTask<KotlinNativeCompilerOptions> = tasks
|
private fun Project.kotlinNativeTask(name: String): KotlinCompilationTask<KotlinNativeCompilerOptions> = tasks
|
||||||
.named<KotlinCompilationTask<KotlinNativeCompilerOptions>>(name)
|
.named<KotlinCompilationTask<KotlinNativeCompilerOptions>>(name)
|
||||||
.get()
|
.get()
|
||||||
|
|
||||||
|
private fun Project.kotlinJsTask(name: String): KotlinCompilationTask<KotlinJsCompilerOptions> = tasks
|
||||||
|
.named<KotlinCompilationTask<KotlinJsCompilerOptions>>(name)
|
||||||
|
.get()
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user