[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.mpp.KotlinMultiplatformPlugin
|
||||
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.tasks.AbstractKotlinCompile
|
||||
import org.jetbrains.kotlin.gradle.tasks.CacheBuilder
|
||||
@@ -216,6 +217,12 @@ internal class PropertiesProvider private constructor(private val project: Proje
|
||||
val jsCompiler: KotlinJsCompilerType
|
||||
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
|
||||
*/
|
||||
|
||||
+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.KotlinCompilationWithResources
|
||||
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.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.KotlinJsBinaryContainer
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.PackageJson
|
||||
@@ -30,6 +32,13 @@ open class KotlinJsCompilation(
|
||||
name: String
|
||||
) : 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()
|
||||
|
||||
internal val binaries: KotlinJsBinaryContainer =
|
||||
|
||||
+9
-1
@@ -25,7 +25,15 @@ internal class DukatCompilationResolverPlugin(
|
||||
val separateTaskName = npmProject.compilation.disambiguateName("generateExternals")
|
||||
|
||||
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>(
|
||||
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.KotlinTarget
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
||||
import org.jetbrains.kotlin.gradle.targets.js.dukat.DukatMode
|
||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||
|
||||
class KotlinJsIrCompilation(
|
||||
@@ -16,6 +17,9 @@ class KotlinJsIrCompilation(
|
||||
name: String
|
||||
) : KotlinJsCompilation(target, name) {
|
||||
|
||||
override val defaultDukatMode: DukatMode
|
||||
get() = DukatMode.SOURCE
|
||||
|
||||
internal val allSources: MutableSet<SourceDirectorySet> = mutableSetOf()
|
||||
|
||||
override fun addSourcesToCompileTask(sourceSet: KotlinSourceSet, addAsCommonSources: Lazy<Boolean>) {
|
||||
|
||||
Reference in New Issue
Block a user