[JS IR] Build hybrid versions of stdlib and kotlin.test
IR version of libraries are no published by default inside pre-IR JARs
This commit is contained in:
@@ -1,70 +0,0 @@
|
|||||||
description = 'Kotlin Test for JS IR'
|
|
||||||
|
|
||||||
apply plugin: 'kotlin-platform-js'
|
|
||||||
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
expectedBy project(':kotlin-test:kotlin-test-common')
|
|
||||||
expectedBy project(':kotlin-test:kotlin-test-annotations-common')
|
|
||||||
compile project(':kotlin-stdlib-js-ir')
|
|
||||||
}
|
|
||||||
|
|
||||||
def jsCommonDir = "${buildDir}/common-js-sources"
|
|
||||||
|
|
||||||
task prepareCommonJsSources(type: Sync) {
|
|
||||||
from "${projectDir}/../js/src/"
|
|
||||||
into jsCommonDir
|
|
||||||
}
|
|
||||||
|
|
||||||
compileKotlin2Js {
|
|
||||||
dependsOn prepareCommonJsSources
|
|
||||||
|
|
||||||
kotlinOptions {
|
|
||||||
moduleKind = "umd"
|
|
||||||
freeCompilerArgs = [
|
|
||||||
"-Xir",
|
|
||||||
"-Xir-produce-only=klib",
|
|
||||||
"-Xallow-kotlin-package",
|
|
||||||
"-Xuse-experimental=kotlin.contracts.ExperimentalContracts",
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sourceSets {
|
|
||||||
main {
|
|
||||||
kotlin {
|
|
||||||
srcDir jsCommonDir
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
compileTestKotlin2Js {
|
|
||||||
kotlinOptions.freeCompilerArgs = [
|
|
||||||
"-Xir",
|
|
||||||
"-Xir-produce-only=js",
|
|
||||||
"-Xallow-kotlin-package",
|
|
||||||
]
|
|
||||||
kotlinOptions {
|
|
||||||
metaInfo = false
|
|
||||||
moduleKind = "umd"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
task sourcesJar(type: Jar, dependsOn: classes) {
|
|
||||||
classifier = 'sources'
|
|
||||||
from(sourceSets.main.allSource)
|
|
||||||
}
|
|
||||||
|
|
||||||
archivesBaseName = 'kotlin-test-js-ir'
|
|
||||||
|
|
||||||
jar {
|
|
||||||
manifestAttributes(manifest, project, 'Test')
|
|
||||||
}
|
|
||||||
|
|
||||||
artifacts {
|
|
||||||
archives sourcesJar
|
|
||||||
}
|
|
||||||
|
|
||||||
if (project.findProperty("kotlin.stdlib.js.ir.publish")?.toBoolean() == true) {
|
|
||||||
configurePublishing(project)
|
|
||||||
}
|
|
||||||
@@ -16,7 +16,11 @@ dependencies {
|
|||||||
}
|
}
|
||||||
|
|
||||||
compileKotlin2Js {
|
compileKotlin2Js {
|
||||||
kotlinOptions.freeCompilerArgs = ["-Xallow-kotlin-package", "-Xuse-experimental=kotlin.contracts.ExperimentalContracts"]
|
kotlinOptions.freeCompilerArgs = [
|
||||||
|
"-Xallow-kotlin-package",
|
||||||
|
"-Xuse-experimental=kotlin.contracts.ExperimentalContracts",
|
||||||
|
"-Xir-produce-klib-dir"
|
||||||
|
]
|
||||||
kotlinOptions {
|
kotlinOptions {
|
||||||
moduleKind = "umd"
|
moduleKind = "umd"
|
||||||
outputFile = "${buildDir}/classes/main/kotlin-test.js"
|
outputFile = "${buildDir}/classes/main/kotlin-test.js"
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ configurations {
|
|||||||
dependencies {
|
dependencies {
|
||||||
expectedBy project(":kotlin-stdlib-common")
|
expectedBy project(":kotlin-stdlib-common")
|
||||||
commonSources project(path: ":kotlin-stdlib-common", configuration: "sources")
|
commonSources project(path: ":kotlin-stdlib-common", configuration: "sources")
|
||||||
testCompile project(':kotlin-test:kotlin-test-js-ir')
|
testCompile project(':kotlin-test:kotlin-test-js')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -107,8 +107,8 @@ compileKotlin2Js {
|
|||||||
main = "noCall"
|
main = "noCall"
|
||||||
verbose = true
|
verbose = true
|
||||||
freeCompilerArgs += [
|
freeCompilerArgs += [
|
||||||
"-Xir",
|
"-Xir-produce-klib-dir",
|
||||||
"-Xir-produce-only=klib",
|
"-Xir-only",
|
||||||
"-Xallow-kotlin-package",
|
"-Xallow-kotlin-package",
|
||||||
"-Xallow-result-return-type",
|
"-Xallow-result-return-type",
|
||||||
"-Xuse-experimental=kotlin.Experimental",
|
"-Xuse-experimental=kotlin.Experimental",
|
||||||
@@ -120,7 +120,7 @@ compileKotlin2Js {
|
|||||||
}
|
}
|
||||||
|
|
||||||
def testOutputFile = "${buildDir}/classes/kotlin/test/kotlin-stdlib-js-ir_test.js"
|
def testOutputFile = "${buildDir}/classes/kotlin/test/kotlin-stdlib-js-ir_test.js"
|
||||||
def kotlinTestTestOutputFile = "${project(':kotlin-test:kotlin-test-js-ir').buildDir}/classes/kotlin/test/kotlin-test-js-ir_test.js"
|
def kotlinTestTestOutputFile = "${project(':kotlin-test:kotlin-test-js').buildDir}/classes/kotlin/test/kotlin-test-js-ir_test.js"
|
||||||
|
|
||||||
compileTestKotlin2Js {
|
compileTestKotlin2Js {
|
||||||
kotlinOptions {
|
kotlinOptions {
|
||||||
@@ -128,8 +128,7 @@ compileTestKotlin2Js {
|
|||||||
verbose = true
|
verbose = true
|
||||||
outputFile = testOutputFile
|
outputFile = testOutputFile
|
||||||
freeCompilerArgs += [
|
freeCompilerArgs += [
|
||||||
"-Xir",
|
"-Xir-produce-js",
|
||||||
"-Xir-produce-only=js",
|
|
||||||
"-verbose",
|
"-verbose",
|
||||||
"-Xuse-experimental=kotlin.Experimental",
|
"-Xuse-experimental=kotlin.Experimental",
|
||||||
"-Xuse-experimental=kotlin.ExperimentalUnsignedTypes",
|
"-Xuse-experimental=kotlin.ExperimentalUnsignedTypes",
|
||||||
@@ -155,11 +154,6 @@ artifacts {
|
|||||||
archives sourcesJar
|
archives sourcesJar
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (project.findProperty("kotlin.stdlib.js.ir.publish")?.toBoolean() == true) {
|
|
||||||
configurePublishing(project)
|
|
||||||
}
|
|
||||||
|
|
||||||
node {
|
node {
|
||||||
download = true
|
download = true
|
||||||
version = '8.9.4' // The default 6.9.1 has buggy hyperbolic functions implementation
|
version = '8.9.4' // The default 6.9.1 has buggy hyperbolic functions implementation
|
||||||
@@ -177,7 +171,7 @@ task installTeamcityReporter(type: NpmTask) {
|
|||||||
task runMocha(type: NodeTask) {
|
task runMocha(type: NodeTask) {
|
||||||
dependsOn compileTestKotlin2Js
|
dependsOn compileTestKotlin2Js
|
||||||
dependsOn installMocha
|
dependsOn installMocha
|
||||||
dependsOn ':kotlin-test:kotlin-test-js-ir:testClasses'
|
dependsOn ':kotlin-test:kotlin-test-js:testClasses'
|
||||||
|
|
||||||
script = file("${buildDir}/node_modules/mocha/bin/mocha")
|
script = file("${buildDir}/node_modules/mocha/bin/mocha")
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ configurations {
|
|||||||
commonSources
|
commonSources
|
||||||
distSources
|
distSources
|
||||||
distJs
|
distJs
|
||||||
|
distLibrary
|
||||||
}
|
}
|
||||||
|
|
||||||
def builtinsSrcDir = "${buildDir}/builtin-sources"
|
def builtinsSrcDir = "${buildDir}/builtin-sources"
|
||||||
@@ -283,9 +284,10 @@ jar {
|
|||||||
enabled false
|
enabled false
|
||||||
}
|
}
|
||||||
|
|
||||||
task mergedJar(type: Jar, dependsOn: compileJs) {
|
task libraryJarWithoutIr(type: Jar, dependsOn: compileJs) {
|
||||||
classifier = null
|
classifier = null
|
||||||
manifestAttributes(manifest, project, 'Main')
|
manifestAttributes(manifest, project, 'Main')
|
||||||
|
destinationDirectory = file("$buildDir/lib/dist")
|
||||||
|
|
||||||
// TODO: Use standard implementation title after js stdlib detector becomes more flexible (KT-17655)
|
// TODO: Use standard implementation title after js stdlib detector becomes more flexible (KT-17655)
|
||||||
Properties properties = new Properties()
|
Properties properties = new Properties()
|
||||||
@@ -307,6 +309,22 @@ task mergedJar(type: Jar, dependsOn: compileJs) {
|
|||||||
exclude "${experimentalJsModuleName}.*"
|
exclude "${experimentalJsModuleName}.*"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
task libraryJarWithIr(type: Zip, dependsOn: libraryJarWithoutIr) {
|
||||||
|
def irStdlibJar = tasks.getByPath(":kotlin-stdlib-js-ir:jar")
|
||||||
|
dependsOn(irStdlibJar)
|
||||||
|
|
||||||
|
archiveExtension = "jar"
|
||||||
|
destinationDirectory = file("$buildDir/libs")
|
||||||
|
|
||||||
|
duplicatesStrategy DuplicatesStrategy.FAIL
|
||||||
|
|
||||||
|
from zipTree(libraryJarWithoutIr.archiveFile)
|
||||||
|
from(zipTree(irStdlibJar.archiveFile)) {
|
||||||
|
exclude 'META-INF/*'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
task sourcesJar(type: Jar, dependsOn: compileJs) {
|
task sourcesJar(type: Jar, dependsOn: compileJs) {
|
||||||
classifier = 'sources'
|
classifier = 'sources'
|
||||||
includeEmptyDirs false
|
includeEmptyDirs false
|
||||||
@@ -352,11 +370,12 @@ task distSourcesJar(type: Jar) {
|
|||||||
|
|
||||||
|
|
||||||
artifacts {
|
artifacts {
|
||||||
runtime mergedJar
|
runtime libraryJarWithIr
|
||||||
archives mergedJar
|
archives libraryJarWithIr
|
||||||
archives sourcesJar
|
archives sourcesJar
|
||||||
sources sourcesJar
|
sources sourcesJar
|
||||||
distSources distSourcesJar
|
distSources distSourcesJar
|
||||||
|
distLibrary libraryJarWithoutIr
|
||||||
|
|
||||||
compileJs.outputs.files.forEach { artifact ->
|
compileJs.outputs.files.forEach { artifact ->
|
||||||
distJs(artifact) { builtBy(compileJs) }
|
distJs(artifact) { builtBy(compileJs) }
|
||||||
|
|||||||
@@ -91,7 +91,6 @@ val distLibraryProjects = listOfNotNull(
|
|||||||
":kotlin-stdlib-js-ir".takeIf { kotlinBuildProperties.jsIrDist },
|
":kotlin-stdlib-js-ir".takeIf { kotlinBuildProperties.jsIrDist },
|
||||||
":kotlin-source-sections-compiler-plugin",
|
":kotlin-source-sections-compiler-plugin",
|
||||||
":kotlin-test:kotlin-test-js",
|
":kotlin-test:kotlin-test-js",
|
||||||
":kotlin-test:kotlin-test-js-ir".takeIf { kotlinBuildProperties.jsIrDist },
|
|
||||||
":kotlin-test:kotlin-test-junit",
|
":kotlin-test:kotlin-test-junit",
|
||||||
":kotlin-test:kotlin-test-junit5",
|
":kotlin-test:kotlin-test-junit5",
|
||||||
":kotlin-test:kotlin-test-jvm",
|
":kotlin-test:kotlin-test-jvm",
|
||||||
@@ -114,7 +113,6 @@ val distSourcesProjects = listOfNotNull(
|
|||||||
":kotlin-script-runtime",
|
":kotlin-script-runtime",
|
||||||
":kotlin-stdlib-js-ir".takeIf { kotlinBuildProperties.jsIrDist },
|
":kotlin-stdlib-js-ir".takeIf { kotlinBuildProperties.jsIrDist },
|
||||||
":kotlin-test:kotlin-test-js",
|
":kotlin-test:kotlin-test-js",
|
||||||
":kotlin-test:kotlin-test-js-ir".takeIf { kotlinBuildProperties.jsIrDist },
|
|
||||||
":kotlin-test:kotlin-test-junit",
|
":kotlin-test:kotlin-test-junit",
|
||||||
":kotlin-test:kotlin-test-junit5",
|
":kotlin-test:kotlin-test-junit5",
|
||||||
":kotlin-test:kotlin-test-jvm",
|
":kotlin-test:kotlin-test-jvm",
|
||||||
@@ -149,7 +147,7 @@ dependencies {
|
|||||||
libraries(intellijDep()) { includeIntellijCoreJarDependencies(project) { it.startsWith("trove4j") } }
|
libraries(intellijDep()) { includeIntellijCoreJarDependencies(project) { it.startsWith("trove4j") } }
|
||||||
libraries(commonDep("io.ktor", "ktor-network"))
|
libraries(commonDep("io.ktor", "ktor-network"))
|
||||||
libraries(kotlinStdlib("jdk8"))
|
libraries(kotlinStdlib("jdk8"))
|
||||||
libraries(kotlinStdlib("js"))
|
libraries(kotlinStdlib("js", "distLibrary"))
|
||||||
|
|
||||||
distLibraryProjects.forEach {
|
distLibraryProjects.forEach {
|
||||||
libraries(project(it)) { isTransitive = false }
|
libraries(project(it)) { isTransitive = false }
|
||||||
|
|||||||
@@ -274,7 +274,6 @@ if (flags.inJpsBuildIdeaSync) {
|
|||||||
":kotlin-stdlib-common",
|
":kotlin-stdlib-common",
|
||||||
":kotlin-stdlib",
|
":kotlin-stdlib",
|
||||||
":kotlin-stdlib-js",
|
":kotlin-stdlib-js",
|
||||||
":kotlin-test:kotlin-test-js-ir",
|
|
||||||
":kotlin-stdlib-js-ir",
|
":kotlin-stdlib-js-ir",
|
||||||
":kotlin-stdlib-jdk7",
|
":kotlin-stdlib-jdk7",
|
||||||
":kotlin-stdlib-jdk8",
|
":kotlin-stdlib-jdk8",
|
||||||
@@ -289,7 +288,6 @@ if (flags.inJpsBuildIdeaSync) {
|
|||||||
project(':kotlin-stdlib').projectDir = "$rootDir/libraries/stdlib/jvm" as File
|
project(':kotlin-stdlib').projectDir = "$rootDir/libraries/stdlib/jvm" as File
|
||||||
project(':kotlin-stdlib-js').projectDir = "$rootDir/libraries/stdlib/js-v1" as File
|
project(':kotlin-stdlib-js').projectDir = "$rootDir/libraries/stdlib/js-v1" as File
|
||||||
project(':kotlin-stdlib-js-ir').projectDir = "$rootDir/libraries/stdlib/js-ir" as File
|
project(':kotlin-stdlib-js-ir').projectDir = "$rootDir/libraries/stdlib/js-ir" as File
|
||||||
project(':kotlin-test:kotlin-test-js-ir').projectDir = "$rootDir/libraries/kotlin.test/js-ir" as File
|
|
||||||
project(':kotlin-stdlib-jdk7').projectDir = "$rootDir/libraries/stdlib/jdk7" as File
|
project(':kotlin-stdlib-jdk7').projectDir = "$rootDir/libraries/stdlib/jdk7" as File
|
||||||
project(':kotlin-stdlib-jdk8').projectDir = "$rootDir/libraries/stdlib/jdk8" as File
|
project(':kotlin-stdlib-jdk8').projectDir = "$rootDir/libraries/stdlib/jdk8" as File
|
||||||
project(':kotlin-stdlib:samples').projectDir = "$rootDir/libraries/stdlib/samples" as File
|
project(':kotlin-stdlib:samples').projectDir = "$rootDir/libraries/stdlib/samples" as File
|
||||||
|
|||||||
Reference in New Issue
Block a user