diff --git a/.gitignore b/.gitignore index 7922daf78ef..b252dc3cb71 100644 --- a/.gitignore +++ b/.gitignore @@ -38,5 +38,5 @@ build/ .idea/compiler.xml .idea/inspectionProfiles/profiles_settings.xml .idea/.name -.idea/artifacts/dist_auto_reference_dont_use.xml +.idea/artifacts/dist_auto_* kotlin-ultimate/ diff --git a/build.gradle.kts b/build.gradle.kts index 7c4c7892341..194c5866efb 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -80,6 +80,8 @@ val appcodeKotlinPlugin by configurations.creating val clionKotlinPlugin by configurations.creating val includeCidr by extra(project.getBooleanProperty("cidrPluginsEnabled") ?: false) +val isJpsBuildEnabled = findProperty("jpsBuild")?.toString() == "true" +val jpsBootstrap by configurations.creating dependencies { if (includeCidr) { @@ -836,7 +838,6 @@ fun org.jetbrains.gradle.ext.JUnit.configureForKotlin() { workingDirectory = rootDir.toString() } -val isJpsBuildEnabled = findProperty("jpsBuild")?.toString() == "true" if (isJpsBuildEnabled && System.getProperty("idea.active") != null) { allprojects { apply(mapOf("plugin" to "idea")) diff --git a/libraries/stdlib/jps-build/build.gradle.kts b/libraries/stdlib/jps-build/build.gradle.kts new file mode 100644 index 00000000000..5ba124841bf --- /dev/null +++ b/libraries/stdlib/jps-build/build.gradle.kts @@ -0,0 +1,73 @@ +import org.gradle.kotlin.dsl.* +import org.jetbrains.gradle.ext.TopLevelArtifact +import java.util.regex.Pattern + +description = "Stdlib configuration for JPS build (to be interpreted during IDEA project import)" + +repositories { + maven(bootstrapKotlinRepo!!.replace("artifacts/content/maven/", "artifacts/content/internal/repo")) +} + +val distLib by configurations.creating +val distCommon by configurations.creating +val distRoot by configurations.creating +val builtins by configurations.creating + +dependencies { + distRoot("org.jetbrains.kotlin:kotlin-stdlib-minimal-for-test:$bootstrapKotlinVersion") + builtins("org.jetbrains.kotlin:builtins:$bootstrapKotlinVersion") + + distLib("org.jetbrains.kotlin:kotlin-stdlib:$bootstrapKotlinVersion") + distLib("org.jetbrains.kotlin:kotlin-stdlib-js:$bootstrapKotlinVersion") + distLib("org.jetbrains.kotlin:kotlin-stdlib-jdk7:$bootstrapKotlinVersion") + distLib("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$bootstrapKotlinVersion") + + distLib("org.jetbrains.kotlin:kotlin-stdlib:$bootstrapKotlinVersion:sources") + distLib("org.jetbrains.kotlin:kotlin-stdlib-js:$bootstrapKotlinVersion:sources") + distLib("org.jetbrains.kotlin:kotlin-stdlib-jdk7:$bootstrapKotlinVersion:sources") + distLib("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$bootstrapKotlinVersion:sources") + + distCommon("org.jetbrains.kotlin:kotlin-stdlib-common:$bootstrapKotlinVersion") + distCommon("org.jetbrains.kotlin:kotlin-stdlib-common:$bootstrapKotlinVersion:sources") +} + +val distDir: String by rootProject.extra +val distLibDir: File by rootProject.extra + +fun TopLevelArtifact.addFromConfiguration(configuration: Configuration) { + configuration.resolve().forEach { + file(it) + } +} + +afterEvaluate { + rootProject.idea { + project { + settings { + ideArtifacts { + create("dist_auto_stdlib_reference_dont_use") { + addFromConfiguration(distRoot) + addFromConfiguration(distCommon) + addFromConfiguration(distLib) + addFromConfiguration(builtins) + } + } + } + } + } +} + +task("distRoot") { + destinationDir = File(distDir) + dependsOn(distRoot) + from(distRoot) + rename("-${Pattern.quote(bootstrapKotlinVersion)}", "") +} + +task("distLib") { + destinationDir = distLibDir + dependsOn(distLib) + from(distLib) + + rename("-${Pattern.quote(bootstrapKotlinVersion)}", "") +} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 8479c99a0ba..8ddebb540e0 100644 --- a/settings.gradle +++ b/settings.gradle @@ -221,6 +221,9 @@ def isJpsBuild = hasProperty("jpsBuild") && jpsBuild == 'true' def includeStdlib = !hasProperty("useBootstrapStdlib") || useBootstrapStdlib == 'false' if (isJpsBuild) { includeStdlib = false + + include ":kotlin-stdlib:jps-build" + project(":kotlin-stdlib:jps-build").projectDir = "$rootDir/libraries/stdlib/jps-build" as File } else { // modules that we are currently cannot compile with jps include ":kotlin-idl2k"