diff --git a/.gitignore b/.gitignore
index 9b089b07c56..acaae95aae8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -38,6 +38,7 @@ build/
.idea/artifacts/dist_auto_*
.idea/artifacts/dist.xml
.idea/artifacts/ideaPlugin.xml
+.idea/artifacts/kotlinc.xml
.idea/artifacts/kotlin_compiler_jar.xml
.idea/artifacts/kotlin_plugin_jar.xml
.idea/artifacts/kotlin_jps_plugin_jar.xml
diff --git a/.idea/artifacts/kotlinc.xml b/.idea/artifacts/kotlinc.xml
deleted file mode 100644
index 7e53b000cb3..00000000000
--- a/.idea/artifacts/kotlinc.xml
+++ /dev/null
@@ -1,255 +0,0 @@
-
-
- $PROJECT_DIR$/out/artifacts/kotlinc
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/gradle/jps.gradle.kts b/gradle/jps.gradle.kts
index da927c88d06..636162f8774 100644
--- a/gradle/jps.gradle.kts
+++ b/gradle/jps.gradle.kts
@@ -73,6 +73,8 @@ if (kotlinBuildProperties.isInJpsBuildIdeaSync) {
kotlinJpsPluginJar()
+ kotlinc()
+
ideaPlugin()
dist()
@@ -266,6 +268,32 @@ fun NamedDomainObjectContainer.dist() {
}
}
+fun NamedDomainObjectContainer.kotlinc() {
+ val kotlinCompilerProject = project(":kotlin-compiler")
+ val libraries by kotlinCompilerProject.configurations
+ val compilerPlugins by kotlinCompilerProject.configurations
+ val sources by kotlinCompilerProject.configurations
+
+ create("kotlinc") {
+ directory("bin") {
+ directoryContent("$rootDir/compiler/cli/bin")
+ }
+
+ directory("lib") {
+ artifact("kotlin-compiler.jar")
+ jarsFromConfiguration(libraries) { it.replace("-$bootstrapKotlinVersion", "") }
+ jarsFromConfiguration(compilerPlugins) { it.removePrefix("kotlin-") }
+ sourceJarsFromConfiguration(sources) { it.replace("-$bootstrapKotlinVersion", "") }
+ }
+
+ directory("license") {
+ directoryContent("$rootDir/license")
+ }
+
+ file("$rootDir/bootstrap/build.txt")
+ }
+}
+
fun NamedDomainObjectContainer.ideaPlugin() {
val ideaPluginProject = project(":prepare:idea-plugin")
(ideaPluginProject as ProjectInternal).evaluate()
@@ -335,26 +363,67 @@ fun RecursiveArtifact.jarContentsFromConfiguration(configuration: Configuration)
}
}
-fun RecursiveArtifact.jarsFromConfiguration(configuration: Configuration) {
+fun RecursiveArtifact.sourceJarsFromConfiguration(configuration: Configuration, renamer: (String) -> String = { it }) {
val resolvedArtifacts = configuration
.resolvedConfiguration
.resolvedArtifacts
- resolvedArtifacts.filter { it.id.componentIdentifier is ModuleComponentIdentifier }
- .map { it.file }
- .forEach(::file)
+ jarsFromExternalModules(resolvedArtifacts, renamer)
+
+ resolvedArtifacts
+ .map { it.id.componentIdentifier }
+ .filterIsInstance()
+ .forEach {
+ val jarBaseName = project(it.projectPath).the().archivesBaseName
+ val renamed = renamer("$jarBaseName-sources") + ".jar"
+ archive(renamed) {
+ project(it.projectPath)
+ .mainSourceSet
+ .allSource
+ .sourceDirectories
+ .forEach {sourceDirectory ->
+ directoryContent(sourceDirectory)
+ }
+ }
+ }
+}
+
+fun RecursiveArtifact.jarsFromConfiguration(configuration: Configuration, renamer: (String) -> String = { it }) {
+ val resolvedArtifacts = configuration
+ .resolvedConfiguration
+ .resolvedArtifacts
+
+ jarsFromExternalModules(resolvedArtifacts, renamer)
resolvedArtifacts
.map { it.id.componentIdentifier }
.filterIsInstance()
.forEach {
- val artifactName = it.projectName + ".jar"
+ val jarBaseName = project(it.projectPath).the().archivesBaseName
+ val artifactName = renamer(jarBaseName) + ".jar"
if (it.projectName in jarArtifactProjects) {
artifact(artifactName)
} else {
archive(artifactName) {
moduleOutput(moduleName(it.projectPath))
+ jarContentsFromEmbeddedConfiguration(project(it.projectPath))
}
}
}
+}
+
+fun RecursiveArtifact.jarsFromExternalModules(resolvedArtifacts: Iterable, renamer: (String) -> String = { it }) {
+ // Use output-file-name property when fixed https://github.com/JetBrains/gradle-idea-ext-plugin/issues/63
+ resolvedArtifacts.filter { it.id.componentIdentifier is ModuleComponentIdentifier }
+ .forEach {
+ val baseName = it.file.nameWithoutExtension
+ val renamed = renamer(baseName)
+ if (it.file.extension == "jar" && renamed != baseName) {
+ archive("$renamed.jar") {
+ extractedDirectory(it.file)
+ }
+ } else {
+ file(it.file)
+ }
+ }
}
\ No newline at end of file
diff --git a/prepare/compiler/build.gradle.kts b/prepare/compiler/build.gradle.kts
index f55d8ca84bc..dadf435c169 100644
--- a/prepare/compiler/build.gradle.kts
+++ b/prepare/compiler/build.gradle.kts
@@ -100,10 +100,7 @@ val distCompilerPluginProjects = listOf(
val distSourcesProjects = listOfNotNull(
":kotlin-annotations-jvm",
- ":kotlin-reflect",
":kotlin-script-runtime",
- ":kotlin-stdlib-jdk7".takeIf { !kotlinBuildProperties.isInJpsBuildIdeaSync },
- ":kotlin-stdlib-jdk8".takeIf { !kotlinBuildProperties.isInJpsBuildIdeaSync },
":kotlin-stdlib-js-ir".takeIf { jsIrDist },
":kotlin-test:kotlin-test-js",
":kotlin-test:kotlin-test-js-ir".takeIf { jsIrDist },
@@ -113,7 +110,7 @@ val distSourcesProjects = listOfNotNull(
":kotlin-test:kotlin-test-testng"
)
-libraries.apply {
+configurations.all {
resolutionStrategy {
preferProjectModules()
}
@@ -157,9 +154,16 @@ dependencies {
sources(project(it, configuration = "sources"))
}
- if (!kotlinBuildProperties.isInJpsBuildIdeaSync) {
+ sources(kotlinStdlib("jdk7", classifier = "sources"))
+ sources(kotlinStdlib("jdk8", classifier = "sources"))
+
+ if (kotlinBuildProperties.isInJpsBuildIdeaSync) {
+ sources(kotlinStdlib(classifier = "sources"))
+ sources("org.jetbrains.kotlin:kotlin-reflect:$bootstrapKotlinVersion:sources")
+ } else {
sources(project(":kotlin-stdlib", configuration = "distSources"))
sources(project(":kotlin-stdlib-js", configuration = "distSources"))
+ sources(project(":kotlin-reflect", configuration = "sources"))
distStdlibMinimalForTests(project(":kotlin-stdlib:jvm-minimal-for-test"))