diff --git a/build.gradle.kts b/build.gradle.kts
index ed05c0d423b..5a77820b26d 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -357,8 +357,9 @@ val coreLibProjects by extra {
)
}
val mppProjects by extra {
- listOf(
- ":kotlin-stdlib-mpp",
+ listOfNotNull(
+ ":kotlin-stdlib-mpp".takeUnless { kotlinBuildProperties.kotlinStdlibMpp },
+ ":kotlin-stdlib".takeIf { kotlinBuildProperties.kotlinStdlibMpp },
)
}
diff --git a/gradle.properties b/gradle.properties
index f04df3b0a43..bd761c074d4 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -56,6 +56,7 @@ kotlin.options.suppressFreeCompilerArgsModificationWarning=true
# TODO: add this flag in a granular way to the modules that don't need stdlib?
kotlin.stdlib.default.dependency=false
kotlin.js.stdlib.dom.api.included=false
+kotlin.stdlib.mpp=true
# Suppress warnings about using deprecated and unstable plugins in kotlin-stdlib
kotlin.internal.suppressGradlePluginErrors=PreHMPPFlagsError
diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml
index f9a55cd9b41..e5768490a5d 100644
--- a/gradle/verification-metadata.xml
+++ b/gradle/verification-metadata.xml
@@ -4101,12 +4101,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -4125,6 +4143,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/libraries/stdlib/build.gradle.kts b/libraries/stdlib/build.gradle.kts
index 6e3a74323b4..9672b673e3f 100644
--- a/libraries/stdlib/build.gradle.kts
+++ b/libraries/stdlib/build.gradle.kts
@@ -980,4 +980,13 @@ private class ComponentWithExternalVariants(
override fun getVariants(): Set = externalComponents
}
-// endregion
\ No newline at end of file
+// endregion
+
+// for legacy intra-project dependencies
+for (name in listOf("sources", "distSources")) {
+ val sourcesConfiguration = configurations.getOrCreate(name).apply {
+ isCanBeResolved = false
+ isCanBeConsumed = true
+ }
+ artifacts.add(sourcesConfiguration.name, tasks["jvmSourcesJar"])
+}
diff --git a/libraries/stdlib/js-v1/build.gradle b/libraries/stdlib/js-v1/build.gradle
index 2346a16f9a7..394b0729cf6 100644
--- a/libraries/stdlib/js-v1/build.gradle
+++ b/libraries/stdlib/js-v1/build.gradle
@@ -376,3 +376,11 @@ tasks.register("runMocha", NodeTask) {
tasks.withType(org.jetbrains.kotlin.gradle.dsl.KotlinJsCompile) {
kotlinOptions.freeCompilerArgs += "-Xforce-deprecated-legacy-compiler-usage"
}
+
+if (BuildPropertiesExtKt.getKotlinStdlibMpp(project.kotlinBuildProperties)) {
+ afterEvaluate {
+ tasks.withType(AbstractPublishToMaven).configureEach {
+ enabled = false
+ }
+ }
+}
\ No newline at end of file
diff --git a/libraries/stdlib/jvm-minimal-for-test/build.gradle.kts b/libraries/stdlib/jvm-minimal-for-test/build.gradle.kts
index c9d6ed74603..055bb458ae1 100644
--- a/libraries/stdlib/jvm-minimal-for-test/build.gradle.kts
+++ b/libraries/stdlib/jvm-minimal-for-test/build.gradle.kts
@@ -32,7 +32,7 @@ sourceSets {
}
val copySources by task {
- val stdlibProjectDir = project(":kotlin-stdlib").projectDir
+ val stdlibProjectDir = file("$rootDir/libraries/stdlib/jvm")
from(stdlibProjectDir.resolve("runtime"))
.include("kotlin/TypeAliases.kt",
diff --git a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/BuildPropertiesExt.kt b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/BuildPropertiesExt.kt
index 4ce9308dd05..55bc6e97372 100644
--- a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/BuildPropertiesExt.kt
+++ b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/BuildPropertiesExt.kt
@@ -59,3 +59,6 @@ val KotlinBuildProperties.useFirWithLightTree: Boolean
val KotlinBuildProperties.useFirTightIC: Boolean
get() = getBoolean("kotlin.build.useFirIC")
+
+val KotlinBuildProperties.kotlinStdlibMpp: Boolean
+ get() = getBoolean("kotlin.stdlib.mpp")
\ No newline at end of file
diff --git a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/repoDependencies.kt b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/repoDependencies.kt
index d0e7175b615..7f0d8d8fbd1 100644
--- a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/repoDependencies.kt
+++ b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/repoDependencies.kt
@@ -86,9 +86,9 @@ fun kotlinDep(artifactBaseName: String, version: String, classifier: String? = n
@JvmOverloads
fun Project.kotlinStdlib(suffix: String? = null, classifier: String? = null): Any {
return if (kotlinBuildProperties.useBootstrapStdlib)
- kotlinDep(listOfNotNull("stdlib", suffix).joinToString("-"), bootstrapKotlinVersion, classifier)
+ kotlinDep(listOfNotNull("stdlib", suffix.takeUnless { kotlinBuildProperties.kotlinStdlibMpp && it == "mpp" }).joinToString("-"), bootstrapKotlinVersion, classifier)
else
- dependencies.project(listOfNotNull(":kotlin-stdlib", suffix).joinToString("-"), classifier)
+ dependencies.project(listOfNotNull(":kotlin-stdlib", suffix.takeUnless { kotlinBuildProperties.kotlinStdlibMpp && it == "mpp" }).joinToString("-"), classifier)
}
fun Project.kotlinBuiltins(): Any = kotlinBuiltins(forJvm = false)
diff --git a/settings.gradle b/settings.gradle
index 5e0d76c57c6..4369e5d00d1 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -578,7 +578,7 @@ if (buildProperties.inJpsBuildIdeaSync) {
project(":kotlin-stdlib:jps-build").projectDir = "$rootDir/libraries/stdlib/jps-build" as File
} else {
// modules that we are currently cannot compile with jps
-
+ def stdlibMpp = buildProperties.getBoolean("kotlin.stdlib.mpp", false)
include ":core:builtins",
":kotlin-stdlib-common",
":kotlin-stdlib",
@@ -587,7 +587,6 @@ if (buildProperties.inJpsBuildIdeaSync) {
":kotlin-dom-api-compat",
":kotlin-stdlib-js-ir-minimal-for-test",
":kotlin-stdlib-wasm",
- ":kotlin-stdlib-mpp",
":kotlin-stdlib-jdk7",
":kotlin-stdlib-jdk8",
":kotlin-stdlib:samples",
@@ -605,8 +604,10 @@ if (buildProperties.inJpsBuildIdeaSync) {
":kotlin-test:kotlin-test-wasm",
":native:native.tests"
+ if (!stdlibMpp) include ":kotlin-stdlib-mpp"
+
project(':kotlin-stdlib-common').projectDir = "$rootDir/libraries/stdlib/common" as File
- project(':kotlin-stdlib').projectDir = "$rootDir/libraries/stdlib/jvm" as File
+ project(':kotlin-stdlib').projectDir = "$rootDir/libraries/stdlib" + (stdlibMpp ? "" : "/jvm") 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-dom-api-compat').projectDir = "$rootDir/libraries/kotlin-dom-api-compat" as File
@@ -614,7 +615,7 @@ if (buildProperties.inJpsBuildIdeaSync) {
project(':kotlin-stdlib-js-ir-minimal-for-test').projectDir = "$rootDir/libraries/stdlib/js-ir-minimal-for-test" 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-mpp').projectDir = "$rootDir/libraries/stdlib" as File
+ if (!stdlibMpp) project(':kotlin-stdlib-mpp').projectDir = "$rootDir/libraries/stdlib" as File
project(':kotlin-stdlib:samples').projectDir = "$rootDir/libraries/stdlib/samples" as File
project(":kotlin-stdlib-jvm-minimal-for-test").projectDir = "$rootDir/libraries/stdlib/jvm-minimal-for-test" as File