[Gradle, JS] Divide KotlinJsCompilerAttribute

This commit is contained in:
Ilya Goncharov
2020-02-20 16:53:30 +03:00
parent cc97138e9c
commit 9acd98071e
5 changed files with 42 additions and 19 deletions
@@ -25,8 +25,7 @@ enum class KotlinJsCompilerType : Named, Serializable {
const val jsCompilerProperty = "kotlin.js.compiler"
fun byArgument(argument: String): KotlinJsCompilerType? =
KotlinJsCompilerType
.values().firstOrNull { it.name.equals(argument, ignoreCase = true) }
values().firstOrNull { it.name.equals(argument, ignoreCase = true) }
}
}
@@ -30,8 +30,8 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMultiplatformPlugin
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages
import org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSetFactory
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsCompilerAttribute
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsPlugin
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
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_KLIB_COMMONIZER_EMBEDDABLE
@@ -100,7 +100,7 @@ abstract class KotlinBasePluginWrapper(
private fun setupAttributeMatchingStrategy(project: Project) = with(project.dependencies.attributesSchema) {
KotlinPlatformType.setupAttributesMatchingStrategy(this)
KotlinUsages.setupAttributesMatchingStrategy(project, this)
KotlinJsTarget.setupAttributesMatchingStrategy(project.dependencies.attributesSchema)
KotlinJsCompilerAttribute.setupAttributesMatchingStrategy(project.dependencies.attributesSchema)
ProjectLocalConfigurations.setupAttributesMatchingStrategy(this)
}
@@ -28,6 +28,7 @@ import org.gradle.language.jvm.tasks.ProcessResources
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
import org.jetbrains.kotlin.gradle.plugin.mpp.*
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsCompilerAttribute
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
import org.jetbrains.kotlin.gradle.utils.COMPILE
@@ -452,11 +453,11 @@ fun Configuration.usesPlatformOf(target: KotlinTarget): Configuration {
attributes.attribute(KotlinPlatformType.attribute, target.platformType)
if (target is KotlinJsTarget) {
attributes.attribute(KotlinJsTarget.jsCompilerAttribute, KotlinJsCompilerType.legacy)
attributes.attribute(KotlinJsCompilerAttribute.jsCompilerAttribute, KotlinJsCompilerAttribute.legacy)
}
if (target is KotlinJsIrTarget) {
attributes.attribute(KotlinJsTarget.jsCompilerAttribute, KotlinJsCompilerType.ir)
attributes.attribute(KotlinJsCompilerAttribute.jsCompilerAttribute, KotlinJsCompilerAttribute.ir)
}
// TODO: Provide an universal way to copy attributes from the target.
@@ -0,0 +1,36 @@
/*
* Copyright 2010-2020 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
import org.gradle.api.Named
import org.gradle.api.attributes.Attribute
import org.gradle.api.attributes.AttributesSchema
import java.io.Serializable
// For Gradle attributes
@Suppress("EnumEntryName")
enum class KotlinJsCompilerAttribute : Named, Serializable {
legacy,
ir,
both;
override fun getName(): String =
name
override fun toString(): String =
getName()
companion object {
val jsCompilerAttribute = Attribute.of(
"org.jetbrains.kotlin.js.compiler",
KotlinJsCompilerAttribute::class.java
)
fun setupAttributesMatchingStrategy(attributesSchema: AttributesSchema) {
attributesSchema.attribute(jsCompilerAttribute)
}
}
}
@@ -7,8 +7,6 @@ package org.jetbrains.kotlin.gradle.targets.js
import org.gradle.api.NamedDomainObjectContainer
import org.gradle.api.Project
import org.gradle.api.attributes.Attribute
import org.gradle.api.attributes.AttributesSchema
import org.gradle.api.tasks.TaskProvider
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
@@ -200,15 +198,4 @@ constructor(
}
}
}
companion object {
val jsCompilerAttribute = Attribute.of(
"org.jetbrains.kotlin.js.compiler",
KotlinJsCompilerType::class.java
)
fun setupAttributesMatchingStrategy(attributesSchema: AttributesSchema) {
attributesSchema.attribute(jsCompilerAttribute)
}
}
}