JS: implement release coroutines in stdlib

This commit is contained in:
Anton Bannykh
2018-07-08 22:43:03 +03:00
committed by Anton Bannykh
parent 2604da6f0e
commit 99ac43eb84
5 changed files with 313 additions and 6 deletions
+37 -5
View File
@@ -15,10 +15,12 @@ def builtinsSrcDir = "${buildDir}/builtin-sources"
def builtinsSrcDir2 = "${buildDir}/builtin-sources-for-builtins"
def commonSrcDir = "${projectDir}/../src/kotlin"
def commonSrcDir2 = "${projectDir}/../common/src"
def coroutinesJsSrcDir = "${projectDir}/../coroutines/js/src"
def builtinsDir = "${rootDir}/core/builtins"
def experimentalSrcDir = "${rootDir}/libraries/stdlib/experimental"
def experimentalJsModuleName = 'kotlin-experimental'
def coroutinesJsModuleName = 'kotlin-stdlib-coroutines'
def jsSrcDir = "src"
def jsTestSrcDir = "test"
def jsSrcJsDir = "${jsSrcDir}/js"
@@ -59,6 +61,12 @@ sourceSets {
srcDir jsTestSrcDir
}
}
coroutines {
kotlin {
srcDir coroutinesJsSrcDir
}
}
}
configurations {
@@ -70,6 +78,7 @@ dependencies {
commonSources project(path: ":kotlin-stdlib-common", configuration: "sources")
testCompile project(':kotlin-test:kotlin-test-js')
merger project(":tools:kotlin-stdlib-js-merger")
coroutinesCompile project.files { sourceSets.main.output.files }.builtBy(compileKotlin2Js)
}
task prepareComparableSource(type: Copy) {
@@ -156,6 +165,16 @@ compileExperimentalKotlin2Js {
}
}
compileCoroutinesKotlin2Js {
kotlinOptions {
languageVersion = "1.3"
apiVersion = "1.3"
outputFile = "${buildDir}/classes/coroutines/kotlin.js"
sourceMap = true
sourceMapPrefix = "./"
}
}
compileTestKotlin2Js {
kotlinOptions {
moduleKind = "umd"
@@ -163,10 +182,11 @@ compileTestKotlin2Js {
}
task compileJs(type: JavaExec) {
dependsOn compileBuiltinsKotlin2Js, compileKotlin2Js, compileExperimentalKotlin2Js
dependsOn compileBuiltinsKotlin2Js, compileKotlin2Js, compileExperimentalKotlin2Js, compileCoroutinesKotlin2Js
inputs.files(compileBuiltinsKotlin2Js.outputs.files)
inputs.files(compileKotlin2Js.outputs.files)
inputs.files(compileExperimentalKotlin2Js.outputs.files)
inputs.files(compileCoroutinesKotlin2Js.outputs.files)
inputs.dir(jsSrcDir)
outputs.file(jsOutputFile)
outputs.file("${jsOutputFile}.map")
@@ -179,7 +199,8 @@ task compileJs(type: JavaExec) {
doFirst {
args = [jsOutputFile, rootDir, "$jsSrcDir/wrapper.js"] + inputFiles.collect { it.path }.sort() +
(compileBuiltinsKotlin2Js.outputs.files.collect { it.path }.sort() +
compileKotlin2Js.outputs.files.collect { it.path }.sort() /* +
compileKotlin2Js.outputs.files.collect { it.path }.sort() +
compileCoroutinesKotlin2Js.outputs.files.collect { it.path }.sort() /* +
compileExperimentalKotlin2Js.outputs.files.collect { it.path }.sort() */).findAll {
it.endsWith(".js") && !it.endsWith(".meta.js")
}
@@ -226,7 +247,8 @@ task compileJs(type: JavaExec) {
sourceMapFile.text = groovy.json.JsonOutput.toJson(sourceMap)
file(jsOutputMetaFile).text = file(compileKotlin2Js.outputFile.path.replaceAll('\\.js$', '.meta.js')).text /* +
file(jsOutputMetaFile).text = file(compileKotlin2Js.outputFile.path.replaceAll('\\.js$', '.meta.js')).text +
file(compileCoroutinesKotlin2Js.outputFile.path.replaceAll('\\.js$', '.meta.js')).text /* +
file(compileExperimentalKotlin2Js.outputFile.path.replaceAll('\\.js$', '.meta.js')).text
.replaceFirst(experimentalJsModuleName, 'kotlin') */
}
@@ -239,7 +261,7 @@ jar {
enabled false
}
task mergedJar(type: Jar, dependsOn: classes) {
task mergedJar(type: Jar, dependsOn: compileJs) {
classifier = null
manifestAttributes(manifest, project, 'Main')
@@ -257,10 +279,13 @@ task mergedJar(type: Jar, dependsOn: classes) {
from "${jsOutputFile}.map"
from sourceSets.main.output
from sourceSets.experimental.output
from("${buildDir}/classes/coroutines/kotlin") {
into coroutinesJsModuleName
}
exclude "${experimentalJsModuleName}.*"
}
task sourcesJar(type: Jar, dependsOn: classes) {
task sourcesJar(type: Jar, dependsOn: compileJs) {
classifier = 'sources'
includeEmptyDirs false
from(sourceSets.builtins.allSource) {
@@ -278,6 +303,9 @@ task sourcesJar(type: Jar, dependsOn: classes) {
from(sourceSets.experimental.allSource) {
into 'kotlin'
}
from(sourceSets.coroutines.allSource) {
into 'kotlin'
}
}
task distSourcesJar(type: Jar) {
@@ -293,6 +321,10 @@ task distSourcesJar(type: Jar) {
exclude 'META-INF/*'
into 'common'
}
from(project(":kotlin-stdlib-common").sourceSets.coroutines.allSource) {
into 'kotlin'
}
}