diff --git a/buildSrc/gradle.properties b/buildSrc/gradle.properties index 1ffc5d36fd6..a375736226d 100644 --- a/buildSrc/gradle.properties +++ b/buildSrc/gradle.properties @@ -1,6 +1,4 @@ org.gradle.jvmargs=-Duser.country=US -Dfile.encoding=UTF-8 -# Should be the same as in the root gradle.properties to avoid spawning second daemon -kotlin.daemon.jvmargs=-Xmx3g -Dkotlin.js.compiler.legacy.force_enabled=true cacheRedirectorEnabled=true diff --git a/buildSrc/settings.gradle b/buildSrc/settings.gradle index 48edac30b0b..ff66d2dc985 100644 --- a/buildSrc/settings.gradle +++ b/buildSrc/settings.gradle @@ -19,6 +19,7 @@ plugins { id "build-cache" id "gradle-enterprise" id "jvm-toolchain-provisioning" + id "kotlin-daemon-config" } File versionPropertiesFile = new File(rootProject.projectDir.parentFile, "gradle/versions.properties") diff --git a/gradle.properties b/gradle.properties index 7b606afb726..036313b4393 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,5 @@ org.gradle.jvmargs=-Duser.country=US -Dfile.encoding=UTF-8 -Dorg.gradle.internal.publish.checksums.insecure=true -#!!! It should be uniform across the project to avoid multiple daemons spawning during the build, which often leads to OOM on build server -kotlin.daemon.jvmargs=-Xmx3g -Dkotlin.js.compiler.legacy.force_enabled=true - systemProp.file.encoding=UTF-8 systemProp.user.country=US # Enable new incremental compiation diff --git a/kotlin-native/build-tools/settings.gradle.kts b/kotlin-native/build-tools/settings.gradle.kts index 5d9f86bd782..52b429e8a74 100644 --- a/kotlin-native/build-tools/settings.gradle.kts +++ b/kotlin-native/build-tools/settings.gradle.kts @@ -16,6 +16,7 @@ pluginManagement { plugins { id("jvm-toolchain-provisioning") id("build-cache") + id("kotlin-daemon-config") } buildscript { diff --git a/repo/gradle-settings-conventions/Readme.md b/repo/gradle-settings-conventions/Readme.md index 2b8064b7a98..96c184e6ae8 100644 --- a/repo/gradle-settings-conventions/Readme.md +++ b/repo/gradle-settings-conventions/Readme.md @@ -7,3 +7,4 @@ Provides common settings convention plugins for the repo. - "build-cache" - local and remote build cache configuration - "gradle-enterprise" - configures build scans upload - "jvm-toolchain-provisioning" - configures JVM toolchain to download project JDKs via Disco API +- "kotlin-daemon-config" - common project JVM arguments for Kotlin daemon diff --git a/repo/gradle-settings-conventions/gradle.properties b/repo/gradle-settings-conventions/gradle.properties index 7d0e0c48377..c8206c92d36 100644 --- a/repo/gradle-settings-conventions/gradle.properties +++ b/repo/gradle-settings-conventions/gradle.properties @@ -1,5 +1,5 @@ kotlin.build.gradlePlugin.version=0.0.39 kotlin.options.suppressFreeCompilerArgsModificationWarning=true cacheRedirectorEnabled=true -# Should be the same as in the root gradle.properties to avoid spawning second daemon +# Should be in sync with ":kotlin-daemon-config" project convention script configuration kotlin.daemon.jvmargs=-Xmx3g -Dkotlin.js.compiler.legacy.force_enabled=true \ No newline at end of file diff --git a/repo/gradle-settings-conventions/kotlin-daemon-config/build.gradle.kts b/repo/gradle-settings-conventions/kotlin-daemon-config/build.gradle.kts new file mode 100644 index 00000000000..9159aaa74f4 --- /dev/null +++ b/repo/gradle-settings-conventions/kotlin-daemon-config/build.gradle.kts @@ -0,0 +1,16 @@ +plugins { + `kotlin-dsl` + id("org.jetbrains.kotlin.jvm") +} + +repositories { + mavenCentral() + gradlePluginPortal() +} + +dependencies { + // TODO: migrate to api only dependency once Kotlin daemon configuration will be available there (Yahor) + implementation("org.jetbrains.kotlin:kotlin-gradle-plugin") +} + +kotlin.jvmToolchain(8) diff --git a/repo/gradle-settings-conventions/kotlin-daemon-config/src/main/kotlin/kotlin-daemon-config.settings.gradle.kts b/repo/gradle-settings-conventions/kotlin-daemon-config/src/main/kotlin/kotlin-daemon-config.settings.gradle.kts new file mode 100644 index 00000000000..7f70b7f7010 --- /dev/null +++ b/repo/gradle-settings-conventions/kotlin-daemon-config/src/main/kotlin/kotlin-daemon-config.settings.gradle.kts @@ -0,0 +1,14 @@ +import org.jetbrains.kotlin.gradle.dsl.KotlinTopLevelExtension +import org.jetbrains.kotlin.gradle.plugin.KotlinBasePlugin + +gradle.afterProject { + plugins.withType { + extensions.configure { + // Should be in sync with 'gradle-settings-conventions/gradle.properties' + kotlinDaemonJvmArgs = listOf( + "-Xmx3g", + "-Dkotlin.js.compiler.legacy.force_enabled=true" + ) + } + } +} diff --git a/repo/gradle-settings-conventions/settings.gradle.kts b/repo/gradle-settings-conventions/settings.gradle.kts index ea26bbacd03..4dbb9dd9a18 100644 --- a/repo/gradle-settings-conventions/settings.gradle.kts +++ b/repo/gradle-settings-conventions/settings.gradle.kts @@ -23,6 +23,7 @@ plugins { include(":build-cache") include(":gradle-enterprise") include(":jvm-toolchain-provisioning") +include(":kotlin-daemon-config") // Unfortunately it is not possible to apply build-cache.settings.gradle.kts as script compilation // could not then find types from "kotlin-build-gradle-plugin" diff --git a/settings.gradle b/settings.gradle index 3cbf33bb026..86d2a26f635 100644 --- a/settings.gradle +++ b/settings.gradle @@ -19,6 +19,7 @@ plugins { id "build-cache" id "gradle-enterprise" id "jvm-toolchain-provisioning" + id "kotlin-daemon-config" } def buildProperties = BuildPropertiesKt.getKotlinBuildPropertiesForSettings(settings)