[Gradle, JS] Add binary dukat mode
^KT-42339 fixed [Gradle, JS] Prepare sources and binary modes for dukat ^KT-42339 fixed
This commit is contained in:
+7
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.gradle.plugin.Kotlin2JsPlugin.Companion.NOWARN_2JS_F
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType.Companion.jsCompilerProperty
|
import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType.Companion.jsCompilerProperty
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMultiplatformPlugin
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMultiplatformPlugin
|
||||||
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
|
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.dukat.DukatMode
|
||||||
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.CacheBuilder
|
import org.jetbrains.kotlin.gradle.tasks.CacheBuilder
|
||||||
@@ -216,6 +217,12 @@ internal class PropertiesProvider private constructor(private val project: Proje
|
|||||||
val jsCompiler: KotlinJsCompilerType
|
val jsCompiler: KotlinJsCompilerType
|
||||||
get() = property(jsCompilerProperty)?.let { KotlinJsCompilerType.byArgumentOrNull(it) } ?: KotlinJsCompilerType.LEGACY
|
get() = property(jsCompilerProperty)?.let { KotlinJsCompilerType.byArgumentOrNull(it) } ?: KotlinJsCompilerType.LEGACY
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default mode of generating of Dukat
|
||||||
|
*/
|
||||||
|
val dukatMode: DukatMode?
|
||||||
|
get() = property("dukat.mode")?.let { DukatMode.byArgumentOrNull(it) }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use Kotlin/JS backend compiler type
|
* Use Kotlin/JS backend compiler type
|
||||||
*/
|
*/
|
||||||
|
|||||||
+9
@@ -17,8 +17,10 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinJsOptionsImpl
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationWithResources
|
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationWithResources
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
|
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
|
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsSubTargetContainerDsl
|
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsSubTargetContainerDsl
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.dukat.DukatMode
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.ir.JsBinary
|
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.npm.PackageJson
|
import org.jetbrains.kotlin.gradle.targets.js.npm.PackageJson
|
||||||
@@ -30,6 +32,13 @@ open class KotlinJsCompilation(
|
|||||||
name: String
|
name: String
|
||||||
) : AbstractKotlinCompilationToRunnableFiles<KotlinJsOptions>(target, name), KotlinCompilationWithResources<KotlinJsOptions> {
|
) : AbstractKotlinCompilationToRunnableFiles<KotlinJsOptions>(target, name), KotlinCompilationWithResources<KotlinJsOptions> {
|
||||||
|
|
||||||
|
private val kotlinProperties = PropertiesProvider(target.project)
|
||||||
|
|
||||||
|
internal val dukatMode: DukatMode
|
||||||
|
get() = kotlinProperties.dukatMode ?: defaultDukatMode
|
||||||
|
|
||||||
|
protected open val defaultDukatMode: DukatMode = DukatMode.BINARY
|
||||||
|
|
||||||
override val kotlinOptions: KotlinJsOptions = KotlinJsOptionsImpl()
|
override val kotlinOptions: KotlinJsOptions = KotlinJsOptionsImpl()
|
||||||
|
|
||||||
internal val binaries: KotlinJsBinaryContainer =
|
internal val binaries: KotlinJsBinaryContainer =
|
||||||
|
|||||||
+9
-1
@@ -25,7 +25,15 @@ internal class DukatCompilationResolverPlugin(
|
|||||||
val separateTaskName = npmProject.compilation.disambiguateName("generateExternals")
|
val separateTaskName = npmProject.compilation.disambiguateName("generateExternals")
|
||||||
|
|
||||||
init {
|
init {
|
||||||
compilation.defaultSourceSet.kotlin.srcDir(npmProject.externalsDir)
|
when (compilation.dukatMode) {
|
||||||
|
DukatMode.SOURCE -> compilation.defaultSourceSet.kotlin.srcDir(npmProject.externalsDir)
|
||||||
|
DukatMode.BINARY -> {
|
||||||
|
project.dependencies.add(
|
||||||
|
compilation.compileDependencyConfigurationName,
|
||||||
|
project.file(npmProject.externalsDir)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
val integratedTask = project.registerTask<IntegratedDukatTask>(
|
val integratedTask = project.registerTask<IntegratedDukatTask>(
|
||||||
integratedTaskName,
|
integratedTaskName,
|
||||||
|
|||||||
+16
@@ -0,0 +1,16 @@
|
|||||||
|
/*
|
||||||
|
* 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.dukat
|
||||||
|
|
||||||
|
enum class DukatMode {
|
||||||
|
SOURCE,
|
||||||
|
BINARY;
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
fun byArgumentOrNull(argument: String): DukatMode? =
|
||||||
|
values().firstOrNull { it.name.equals(argument, ignoreCase = true) }
|
||||||
|
}
|
||||||
|
}
|
||||||
+4
@@ -9,6 +9,7 @@ import org.gradle.api.file.SourceDirectorySet
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
||||||
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
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.dukat.DukatMode
|
||||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||||
|
|
||||||
class KotlinJsIrCompilation(
|
class KotlinJsIrCompilation(
|
||||||
@@ -16,6 +17,9 @@ class KotlinJsIrCompilation(
|
|||||||
name: String
|
name: String
|
||||||
) : KotlinJsCompilation(target, name) {
|
) : KotlinJsCompilation(target, name) {
|
||||||
|
|
||||||
|
override val defaultDukatMode: DukatMode
|
||||||
|
get() = DukatMode.SOURCE
|
||||||
|
|
||||||
internal val allSources: MutableSet<SourceDirectorySet> = mutableSetOf()
|
internal val allSources: MutableSet<SourceDirectorySet> = mutableSetOf()
|
||||||
|
|
||||||
override fun addSourcesToCompileTask(sourceSet: KotlinSourceSet, addAsCommonSources: Lazy<Boolean>) {
|
override fun addSourcesToCompileTask(sourceSet: KotlinSourceSet, addAsCommonSources: Lazy<Boolean>) {
|
||||||
|
|||||||
Reference in New Issue
Block a user