[stdlib] Merge js-ir specific sources into common js sources

This commit is contained in:
Ilya Gorbunov
2023-10-06 22:20:58 +02:00
committed by Space Team
parent f00d4022c4
commit 911fa3bbbb
55 changed files with 54 additions and 65 deletions
+1 -1
View File
@@ -23,7 +23,7 @@ fun assertExists(file: File) {
} }
val BUILT_INS_NATIVE_DIR_JVM = File("core/builtins/native/") val BUILT_INS_NATIVE_DIR_JVM = File("core/builtins/native/")
val BUILT_INS_NATIVE_DIR_JS = File("libraries/stdlib/js-ir/builtins/") val BUILT_INS_NATIVE_DIR_JS = File("libraries/stdlib/js/builtins/")
val BUILT_INS_NATIVE_DIR_WASM = File("libraries/stdlib/wasm/builtins/") val BUILT_INS_NATIVE_DIR_WASM = File("libraries/stdlib/wasm/builtins/")
val BUILT_INS_NATIVE_DIR_NATIVE = File("kotlin-native/runtime/src/main/kotlin/") val BUILT_INS_NATIVE_DIR_NATIVE = File("kotlin-native/runtime/src/main/kotlin/")
val BUILT_INS_SRC_DIR = File("core/builtins/src/") val BUILT_INS_SRC_DIR = File("core/builtins/src/")
+9 -14
View File
@@ -49,12 +49,9 @@ dependencies {
val builtinsDir = "${rootDir}/core/builtins" val builtinsDir = "${rootDir}/core/builtins"
val builtinsSrcDir = "${buildDir}/src/builtin-sources" val builtinsSrcDir = "${buildDir}/src/builtin-sources"
val jsCommonDir = "${projectDir}/js" val jsDir = "${projectDir}/js"
val jsCommonSrcDir = "${jsCommonDir}/src"
val jsCommonTestSrcDir = "${jsCommonDir}/test"
// for js-ir // for js-ir
val jsIrDir = "${projectDir}/js-ir"
val jsIrMainSources = "${buildDir}/src/jsMainSources" val jsIrMainSources = "${buildDir}/src/jsMainSources"
lateinit var jsIrTarget: KotlinJsTargetDsl lateinit var jsIrTarget: KotlinJsTargetDsl
@@ -329,21 +326,19 @@ kotlin {
val prepareJsIrMainSources by tasks.registering(Sync::class) val prepareJsIrMainSources by tasks.registering(Sync::class)
kotlin { kotlin {
srcDir(prepareJsIrMainSources) srcDir(prepareJsIrMainSources)
srcDir("$jsCommonDir/src").apply { srcDir("$jsDir/builtins")
srcDir("$jsDir/runtime")
srcDir("$jsDir/src").apply {
exclude("kotlin/browser") exclude("kotlin/browser")
exclude("kotlin/dom") exclude("kotlin/dom")
exclude("kotlinx") exclude("kotlinx")
exclude("org.w3c") exclude("org.w3c")
} }
srcDir("$jsCommonDir/runtime")
srcDir("$jsIrDir/builtins")
srcDir("$jsIrDir/runtime")
srcDir("$jsIrDir/src")
} }
prepareJsIrMainSources.configure { prepareJsIrMainSources.configure {
val unimplementedNativeBuiltIns = val unimplementedNativeBuiltIns =
(file("$builtinsDir/native/kotlin/").list()!!.toSortedSet() - file("$jsIrDir/builtins/").list()!!) (file("$builtinsDir/native/kotlin/").list()!!.toSortedSet() - file("$jsDir/builtins/").list()!!)
.map { "core/builtins/native/kotlin/$it" } .map { "core/builtins/native/kotlin/$it" }
// TODO: try to reuse absolute paths defined in the beginning // TODO: try to reuse absolute paths defined in the beginning
@@ -392,7 +387,7 @@ kotlin {
dependencies { dependencies {
api(project(":kotlin-test:kotlin-test-js-ir")) api(project(":kotlin-test:kotlin-test-js-ir"))
} }
kotlin.srcDir(jsCommonTestSrcDir) kotlin.srcDir("${jsDir}/test")
} }
val nativeWasmMain by creating { val nativeWasmMain by creating {
@@ -602,14 +597,14 @@ tasks {
} }
from("$jsIrMainSources/core/builtins/src") from("$jsIrMainSources/core/builtins/src")
from("$jsIrMainSources/libraries/stdlib/js/src") from("$jsIrMainSources/libraries/stdlib/js/src")
from("$jsIrDir/builtins") { from("$jsDir/builtins") {
into("kotlin") into("kotlin")
exclude("Enum.kt") exclude("Enum.kt")
} }
from("$jsIrDir/runtime") { from("$jsDir/runtime") {
into("runtime") into("runtime")
} }
from("$jsIrDir/src") { from("$jsDir/src") {
include("**/*.kt") include("**/*.kt")
} }
} }
@@ -87,52 +87,48 @@ val commonMainCollectionSources by task<Sync> {
val jsMainSources by task<Sync> { val jsMainSources by task<Sync> {
dependsOn(":kotlin-stdlib:prepareJsIrMainSources") dependsOn(":kotlin-stdlib:prepareJsIrMainSources")
val jsDir = file("$rootDir/libraries/stdlib/js")
from { from("$jsDir/src") {
val fullJsMainSources = tasks.getByPath(":kotlin-stdlib:prepareJsIrMainSources")
exclude( exclude(
listOf( "generated/**",
"libraries/stdlib/js/src/org.w3c/**", "org.w3c/**",
"libraries/stdlib/js/src/kotlin/char.kt", "kotlin/char.kt",
"libraries/stdlib/js/src/kotlin/collectionJs.kt", "kotlin/collectionJs.kt",
"libraries/stdlib/js/src/kotlin/collections/**", "kotlin/collections/**",
"libraries/stdlib/js/src/kotlin/time/**", "kotlin/time/**",
"libraries/stdlib/js/src/kotlin/console.kt", "kotlin/console.kt",
"libraries/stdlib/js/src/kotlin/coreDeprecated.kt", "kotlin/coreDeprecated.kt",
"libraries/stdlib/js/src/kotlin/date.kt", "kotlin/date.kt",
"libraries/stdlib/js/src/kotlin/GroupingJs.kt", "kotlin/GroupingJs.kt",
"libraries/stdlib/js/src/kotlin/ItemArrayLike.kt", "kotlin/ItemArrayLike.kt",
"libraries/stdlib/js/src/kotlin/io/**", "kotlin/io/**",
"libraries/stdlib/js/src/kotlin/json.kt", "kotlin/json.kt",
"libraries/stdlib/js/src/kotlin/promise.kt", "kotlin/promise.kt",
"libraries/stdlib/js/src/kotlin/regexp.kt", "kotlin/regexp.kt",
"libraries/stdlib/js/src/kotlin/sequenceJs.kt", "kotlin/sequenceJs.kt",
"libraries/stdlib/js/src/kotlin/throwableExtensions.kt", "kotlin/throwableExtensions.kt",
"libraries/stdlib/js/src/kotlin/text/**", "kotlin/text/**",
"libraries/stdlib/js/src/kotlin/reflect/KTypeHelpers.kt", "kotlin/reflect/KTypeHelpers.kt",
"libraries/stdlib/js/src/kotlin/reflect/KTypeParameterImpl.kt", "kotlin/reflect/KTypeParameterImpl.kt",
"libraries/stdlib/js/src/kotlin/reflect/KTypeImpl.kt", "kotlin/reflect/KTypeImpl.kt",
"libraries/stdlib/js/src/kotlin/dom/**", "kotlin/dom/**",
"libraries/stdlib/js/src/kotlin/browser/**", "kotlin/browser/**",
"libraries/stdlib/js/src/kotlinx/dom/**", "kotlinx/dom/**",
"libraries/stdlib/js/src/kotlinx/browser/**", "kotlinx/browser/**",
"libraries/stdlib/js/src/kotlin/enums/**" "kotlin/enums/**",
)
) )
fullJsMainSources.outputs.files.singleFile
} }
from {
for (jsIrSrcDir in listOf("builtins", "runtime", "src")) { val fullJsMainSources = tasks.getByPath(":kotlin-stdlib:prepareJsIrMainSources") as Sync
from("$rootDir/libraries/stdlib/js-ir/$jsIrSrcDir") { fullJsMainSources.destinationDir
exclude( }
listOf( from("$jsDir/runtime") {
"collectionsHacks.kt", exclude("collectionsHacks.kt")
"generated/**", into("runtime")
"kotlin/text/**" }
) from("$jsDir/builtins") {
) into("builtins")
into("libraries/stdlib/js-ir/$jsIrSrcDir")
}
} }
from("$rootDir/libraries/stdlib/js-ir-minimal-for-test/src") from("$rootDir/libraries/stdlib/js-ir-minimal-for-test/src")
+5 -3
View File
@@ -1,5 +1,7 @@
This directory contains shared sources of Kotlin/JS Standard Library for current and IR backends. ## Kotlin Standard Library for JS
Note that `stdlib/js/src/generated` is not shared but used exclusively for current `js-v1` backend. This directory contains Kotlin/JS specific sources of Kotlin standard library
that are used together common sources to produce the `kotlin-stdlib-js` artifact.
Kotlin/JS Standard Library module is moved to `libraries/stdlib/js-v1`. Additional sources are copied during the build from `/core/builtins/` except those builtins that
have a more specific version for K/JS (see `builtins` subdirectory).
+1 -5
View File
@@ -81,14 +81,10 @@ the Kotlin IntelliJ IDEA plugin:
- License: Apache 2 ([license/third_party/gwt_license.txt][gwt]) - License: Apache 2 ([license/third_party/gwt_license.txt][gwt])
- Origin: Derived from GWT, (C) 2007-08 Google Inc. - Origin: Derived from GWT, (C) 2007-08 Google Inc.
- Path: libraries/stdlib/js-v1/src/js/long.js - Path: libraries/stdlib/js/runtime/longJs.kt
- License: Apache 2 ([license/third_party/closure-compiler_LICENSE.txt][closure-compiler]) - License: Apache 2 ([license/third_party/closure-compiler_LICENSE.txt][closure-compiler])
- Origin: Google Closure Library, Copyright 2009 The Closure Library Authors - Origin: Google Closure Library, Copyright 2009 The Closure Library Authors
- Path: libraries/stdlib/js-v1/src/js/polyfills.js
- License: Boost Software License 1.0 ([license/third_party/boost_LICENSE.txt][boost])
- Origin: Derived from boost special math functions, Copyright Eric Ford & Hubert Holin 2001.
- Path: libraries/stdlib/js/src/kotlin/js/math.polyfills.kt - Path: libraries/stdlib/js/src/kotlin/js/math.polyfills.kt
- License: Boost Software License 1.0 ([license/third_party/boost_LICENSE.txt][boost]) - License: Boost Software License 1.0 ([license/third_party/boost_LICENSE.txt][boost])
- Origin: Derived from boost special math functions, Copyright Eric Ford & Hubert Holin 2001. - Origin: Derived from boost special math functions, Copyright Eric Ford & Hubert Holin 2001.