From b695f205262078630142f672dcacd994cb17f01a Mon Sep 17 00:00:00 2001 From: Kirill Shmakov Date: Thu, 21 Feb 2019 19:00:37 +0300 Subject: [PATCH 1/5] Candidate --- .../kotlin/konan/target/KonanTarget.kt | 11 ++++- ...otlinTargetContainerWithPresetFunctions.kt | 45 ++++++++++++------- 2 files changed, 39 insertions(+), 17 deletions(-) diff --git a/konan/utils/src/org/jetbrains/kotlin/konan/target/KonanTarget.kt b/konan/utils/src/org/jetbrains/kotlin/konan/target/KonanTarget.kt index e7564ca144b..c94c059d2de 100644 --- a/konan/utils/src/org/jetbrains/kotlin/konan/target/KonanTarget.kt +++ b/konan/utils/src/org/jetbrains/kotlin/konan/target/KonanTarget.kt @@ -23,6 +23,7 @@ enum class Family( enum class Architecture(val bitness: Int) { X64(64), + X86(32), ARM64(64), ARM32(32), MIPS32(32), @@ -38,6 +39,7 @@ sealed class KonanTarget(override val name: String, val family: Family, val arch object IOS_X64 : KonanTarget("ios_x64", Family.IOS, Architecture.X64) object LINUX_X64 : KonanTarget("linux_x64", Family.LINUX, Architecture.X64) object MINGW_X64 : KonanTarget("mingw_x64", Family.MINGW, Architecture.X64) + object MINGW_X86 : KonanTarget("mingw_x86", Family.MINGW, Architecture.X86) object MACOS_X64 : KonanTarget("macos_x64", Family.OSX, Architecture.X64) object LINUX_ARM32_HFP : KonanTarget("linux_arm32_hfp", Family.LINUX, Architecture.ARM32) object LINUX_MIPS32 : KonanTarget("linux_mips32", Family.LINUX, Architecture.MIPS32) @@ -58,7 +60,7 @@ object PredefinedKonanTargets { ANDROID_ARM32, ANDROID_ARM64, IOS_ARM32, IOS_ARM64, IOS_X64, LINUX_X64, LINUX_ARM32_HFP, LINUX_MIPS32, LINUX_MIPSEL32, - MINGW_X64, + MINGW_X64, MINGW_X86, MACOS_X64, KonanTarget.WASM32 ) @@ -188,13 +190,18 @@ open class HostManager(subtargetProvider: SubTargetProvider = NoSubTargets()) { ) + zephyrSubtargets, KonanTarget.MINGW_X64 to setOf( KonanTarget.MINGW_X64, - KonanTarget.WASM32 + KonanTarget.WASM32, + KonanTarget.LINUX_X64, + KonanTarget.LINUX_ARM32_HFP, + KonanTarget.ANDROID_ARM32 ) + zephyrSubtargets, KonanTarget.MACOS_X64 to setOf( KonanTarget.MACOS_X64, KonanTarget.IOS_ARM32, KonanTarget.IOS_ARM64, KonanTarget.IOS_X64, + KonanTarget.LINUX_X64, + KonanTarget.LINUX_ARM32_HFP, KonanTarget.ANDROID_ARM32, KonanTarget.ANDROID_ARM64, KonanTarget.WASM32 diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithPresetFunctions.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithPresetFunctions.kt index 6c909fd6e6f..5872e5478db 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithPresetFunctions.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinTargetContainerWithPresetFunctions.kt @@ -26,7 +26,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP presets.getByName("jvm") as KotlinJvmTargetPreset, configure ) - + fun jvm() = jvm("jvm") { } fun jvm(name: String) = jvm(name) { } fun jvm(name: String, configure: Closure<*>) = jvm(name) { ConfigureUtil.configure(configure, this) } @@ -41,7 +41,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP presets.getByName("js") as KotlinJsTargetPreset, configure ) - + fun js() = js("js") { } fun js(name: String) = js(name) { } fun js(name: String, configure: Closure<*>) = js(name) { ConfigureUtil.configure(configure, this) } @@ -56,7 +56,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP presets.getByName("android") as KotlinAndroidTargetPreset, configure ) - + fun android() = android("android") { } fun android(name: String) = android(name) { } fun android(name: String, configure: Closure<*>) = android(name) { ConfigureUtil.configure(configure, this) } @@ -71,7 +71,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP presets.getByName("androidNativeArm32") as KotlinNativeTargetPreset, configure ) - + fun androidNativeArm32() = androidNativeArm32("androidNativeArm32") { } fun androidNativeArm32(name: String) = androidNativeArm32(name) { } fun androidNativeArm32(name: String, configure: Closure<*>) = androidNativeArm32(name) { ConfigureUtil.configure(configure, this) } @@ -86,7 +86,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP presets.getByName("androidNativeArm64") as KotlinNativeTargetPreset, configure ) - + fun androidNativeArm64() = androidNativeArm64("androidNativeArm64") { } fun androidNativeArm64(name: String) = androidNativeArm64(name) { } fun androidNativeArm64(name: String, configure: Closure<*>) = androidNativeArm64(name) { ConfigureUtil.configure(configure, this) } @@ -101,7 +101,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP presets.getByName("iosArm32") as KotlinNativeTargetPreset, configure ) - + fun iosArm32() = iosArm32("iosArm32") { } fun iosArm32(name: String) = iosArm32(name) { } fun iosArm32(name: String, configure: Closure<*>) = iosArm32(name) { ConfigureUtil.configure(configure, this) } @@ -116,7 +116,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP presets.getByName("iosArm64") as KotlinNativeTargetPreset, configure ) - + fun iosArm64() = iosArm64("iosArm64") { } fun iosArm64(name: String) = iosArm64(name) { } fun iosArm64(name: String, configure: Closure<*>) = iosArm64(name) { ConfigureUtil.configure(configure, this) } @@ -131,7 +131,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP presets.getByName("iosX64") as KotlinNativeTargetPreset, configure ) - + fun iosX64() = iosX64("iosX64") { } fun iosX64(name: String) = iosX64(name) { } fun iosX64(name: String, configure: Closure<*>) = iosX64(name) { ConfigureUtil.configure(configure, this) } @@ -146,7 +146,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP presets.getByName("linuxX64") as KotlinNativeTargetPreset, configure ) - + fun linuxX64() = linuxX64("linuxX64") { } fun linuxX64(name: String) = linuxX64(name) { } fun linuxX64(name: String, configure: Closure<*>) = linuxX64(name) { ConfigureUtil.configure(configure, this) } @@ -161,7 +161,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP presets.getByName("linuxArm32Hfp") as KotlinNativeTargetPreset, configure ) - + fun linuxArm32Hfp() = linuxArm32Hfp("linuxArm32Hfp") { } fun linuxArm32Hfp(name: String) = linuxArm32Hfp(name) { } fun linuxArm32Hfp(name: String, configure: Closure<*>) = linuxArm32Hfp(name) { ConfigureUtil.configure(configure, this) } @@ -176,7 +176,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP presets.getByName("linuxMips32") as KotlinNativeTargetPreset, configure ) - + fun linuxMips32() = linuxMips32("linuxMips32") { } fun linuxMips32(name: String) = linuxMips32(name) { } fun linuxMips32(name: String, configure: Closure<*>) = linuxMips32(name) { ConfigureUtil.configure(configure, this) } @@ -191,7 +191,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP presets.getByName("linuxMipsel32") as KotlinNativeTargetPreset, configure ) - + fun linuxMipsel32() = linuxMipsel32("linuxMipsel32") { } fun linuxMipsel32(name: String) = linuxMipsel32(name) { } fun linuxMipsel32(name: String, configure: Closure<*>) = linuxMipsel32(name) { ConfigureUtil.configure(configure, this) } @@ -206,12 +206,27 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP presets.getByName("mingwX64") as KotlinNativeTargetPreset, configure ) - + fun mingwX64() = mingwX64("mingwX64") { } fun mingwX64(name: String) = mingwX64(name) { } fun mingwX64(name: String, configure: Closure<*>) = mingwX64(name) { ConfigureUtil.configure(configure, this) } fun mingwX64(configure: Closure<*>) = mingwX64 { ConfigureUtil.configure(configure, this) } + fun mingwX86( + name: String = "mingwX86", + configure: KotlinNativeTarget.() -> Unit = { } + ): KotlinNativeTarget = + configureOrCreate( + name, + presets.getByName("mingwX86") as KotlinNativeTargetPreset, + configure + ) + + fun mingwX86() = mingwX86("mingwX86") { } + fun mingwX86(name: String) = mingwX86(name) { } + fun mingwX86(name: String, configure: Closure<*>) = mingwX86(name) { ConfigureUtil.configure(configure, this) } + fun mingwX86(configure: Closure<*>) = mingwX86 { ConfigureUtil.configure(configure, this) } + fun macosX64( name: String = "macosX64", configure: KotlinNativeTarget.() -> Unit = { } @@ -221,7 +236,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP presets.getByName("macosX64") as KotlinNativeTargetPreset, configure ) - + fun macosX64() = macosX64("macosX64") { } fun macosX64(name: String) = macosX64(name) { } fun macosX64(name: String, configure: Closure<*>) = macosX64(name) { ConfigureUtil.configure(configure, this) } @@ -236,7 +251,7 @@ interface KotlinTargetContainerWithPresetFunctions : KotlinTargetsContainerWithP presets.getByName("wasm32") as KotlinNativeTargetPreset, configure ) - + fun wasm32() = wasm32("wasm32") { } fun wasm32(name: String) = wasm32(name) { } fun wasm32(name: String, configure: Closure<*>) = wasm32(name) { ConfigureUtil.configure(configure, this) } From fb14128cbd4c196484a677cb40a15b07e55d2940 Mon Sep 17 00:00:00 2001 From: Kirill Shmakov Date: Mon, 25 Feb 2019 13:46:34 +0300 Subject: [PATCH 2/5] All but one --- .../stdlib/src/kotlin/util/KotlinVersion.kt | 2 +- .../kotlin/gradle/NewMultiplatformIT.kt | 48 +++++++++++-------- .../kotlin/gradle/tasks/KotlinNativeTasks.kt | 2 +- .../gradle/utils/NativeCompilerDownloader.kt | 2 +- 4 files changed, 31 insertions(+), 23 deletions(-) diff --git a/libraries/stdlib/src/kotlin/util/KotlinVersion.kt b/libraries/stdlib/src/kotlin/util/KotlinVersion.kt index 20b1b1c3764..5cbe3f70807 100644 --- a/libraries/stdlib/src/kotlin/util/KotlinVersion.kt +++ b/libraries/stdlib/src/kotlin/util/KotlinVersion.kt @@ -72,6 +72,6 @@ public class KotlinVersion(val major: Int, val minor: Int, val patch: Int) : Com * Returns the current version of the Kotlin standard library. */ @kotlin.jvm.JvmField - public val CURRENT: KotlinVersion = KotlinVersion(1, 3, 0) // value is written here automatically during build + public val CURRENT: KotlinVersion = KotlinVersion(1, 3, 30) // value is written here automatically during build } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt index 767b043fde0..96ff5b09918 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt @@ -18,6 +18,7 @@ import org.jetbrains.kotlin.konan.target.CompilerOutputKind import org.jetbrains.kotlin.konan.target.HostManager import org.junit.Assert import org.junit.Test +import java.lang.StringBuilder import java.util.jar.JarFile import java.util.zip.ZipFile import kotlin.test.assertEquals @@ -34,6 +35,13 @@ class NewMultiplatformIT : BaseGradleIT() { else -> error("Unknown host") } + val supportedNativeTargets = when { + HostManager.hostIsMingw -> listOf("linux64", "mingw64", "wasm32") + HostManager.hostIsLinux -> listOf("linux64", "mingw64", "wasm32") + HostManager.hostIsMac -> listOf("linux64", "macos64", "wasm32") + else -> error("Unknown host") + } + private fun Project.targetClassesDir(targetName: String, sourceSetName: String = "main") = classesDir(sourceSet = "$targetName/$sourceSetName") @@ -615,19 +623,21 @@ class NewMultiplatformIT : BaseGradleIT() { projectDir.resolve("repo") } + val dependencyBuilder = StringBuilder() + dependencyBuilder.append("dependencies {\n") + dependencyBuilder.append(" allJvmImplementation 'com.example:sample-lib-jvm6:1.0'\n") + dependencyBuilder.append(" nodeJsMainImplementation 'com.example:sample-lib-nodejs:1.0'\n") + + for (target in supportedNativeTargets) { + dependencyBuilder.append(" ${target}MainImplementation 'com.example:sample-lib-$target:1.0'\n") + } + dependencyBuilder.append("}") + with(Project("sample-app", gradleVersion, "new-mpp-lib-and-app")) { setupWorkingDir() gradleBuildScript().modify { - it.replace("implementation 'com.example:sample-lib:1.0'", "implementation 'com.example:sample-lib-metadata:1.0'") + "\n" + """ - repositories { maven { url '${repoDir.toURI()}' } } - - dependencies { - allJvmImplementation 'com.example:sample-lib-jvm6:1.0' - nodeJsMainImplementation 'com.example:sample-lib-nodejs:1.0' - wasm32MainImplementation 'com.example:sample-lib-wasm32:1.0' - ${nativeHostTargetName}MainImplementation 'com.example:sample-lib-${nativeHostTargetName.toLowerCase()}:1.0' - } - """.trimIndent() + it.replace("implementation 'com.example:sample-lib:1.0'", "implementation 'com.example:sample-lib-metadata:1.0'") + + "\nrepositories { maven { url '${repoDir.toURI()}' } }\n\n" + dependencyBuilder.toString() } build("assemble") { @@ -1092,9 +1102,13 @@ class NewMultiplatformIT : BaseGradleIT() { } val host = nativeHostTargetName + + val libraryCinteropTask = ":projectLibrary:cinteropStdio${host.capitalize()}" + val libraryCompileTask = ":projectLibrary:compileKotlin${host.capitalize()}" + build(":projectLibrary:build") { assertSuccessful() - assertTasksExecuted(":projectLibrary:cinteropStdio${host.capitalize()}") + assertTasksExecuted(libraryCinteropTask) assertTrue(output.contains("Project test"), "No test output found") assertFileExists("projectLibrary/build/classes/kotlin/$host/main/projectLibrary-cinterop-stdio.klib") } @@ -1116,18 +1130,12 @@ class NewMultiplatformIT : BaseGradleIT() { // Check that changing the compiler version in properties causes interop reprocessing and source recompilation. build(":projectLibrary:build") { assertSuccessful() - assertTasksUpToDate( - ":projectLibrary:cinteropStdio${host.capitalize()}", - ":projectLibrary:compileKotlin${host.capitalize()}" - ) + assertTasksUpToDate(libraryCinteropTask, libraryCompileTask) } - build(":projectLibrary:build", "-Porg.jetbrains.kotlin.native.version=0.9.2") { + build(libraryCinteropTask, libraryCompileTask, "-Porg.jetbrains.kotlin.native.version=1.1.0") { assertSuccessful() - assertTasksExecuted( - ":projectLibrary:cinteropStdio${host.capitalize()}", - ":projectLibrary:compileKotlin${host.capitalize()}" - ) + assertTasksExecuted(libraryCinteropTask, libraryCompileTask) } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinNativeTasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinNativeTasks.kt index 2af217a4f4d..a0c4b794a0b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinNativeTasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinNativeTasks.kt @@ -518,7 +518,7 @@ open class CInteropProcess : DefaultTask() { } libraries.files.filterExternalKlibs(project).forEach { library -> - addArg("-l", library.absolutePath) + addArg("-library", library.absolutePath) } addArgs("-copt", allHeadersDirs.map { "-I${it.absolutePath}" }) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/NativeCompilerDownloader.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/NativeCompilerDownloader.kt index 3738fca6f73..aff749fa1ed 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/NativeCompilerDownloader.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/utils/NativeCompilerDownloader.kt @@ -25,7 +25,7 @@ class NativeCompilerDownloader( ) { internal companion object { - val DEFAULT_KONAN_VERSION = KonanVersionImpl(MetaVersion.RC1, 1, 1, 0, 5227) + val DEFAULT_KONAN_VERSION = KonanVersionImpl(MetaVersion.RC1, 1, 2, 0, 7773) const val BASE_DOWNLOAD_URL = "https://download.jetbrains.com/kotlin/native/builds" } From 02c9afcb6f53898f7d560def102f363b4b7509e5 Mon Sep 17 00:00:00 2001 From: Kirill Shmakov Date: Mon, 25 Feb 2019 14:15:30 +0300 Subject: [PATCH 3/5] Last test --- .../kotlin/gradle/NewMultiplatformIT.kt | 36 ++++++++++++------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt index 96ff5b09918..3e8df44952a 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt @@ -25,23 +25,37 @@ import kotlin.test.assertEquals import kotlin.test.assertFalse import kotlin.test.assertTrue -class NewMultiplatformIT : BaseGradleIT() { - val gradleVersion = GradleVersionRequired.AtLeast("4.7") +data class NativeTargets(val current: String, val supported: List, val unsupported: List) - val nativeHostTargetName = when { +fun configure(): NativeTargets { + val all = listOf("linux64", "macos64", "mingw64", "wasm32") + + val current = when { HostManager.hostIsMingw -> "mingw64" HostManager.hostIsLinux -> "linux64" HostManager.hostIsMac -> "macos64" else -> error("Unknown host") } - val supportedNativeTargets = when { - HostManager.hostIsMingw -> listOf("linux64", "mingw64", "wasm32") - HostManager.hostIsLinux -> listOf("linux64", "mingw64", "wasm32") - HostManager.hostIsMac -> listOf("linux64", "macos64", "wasm32") + val unsupported = when { + HostManager.hostIsMingw -> listOf("macos64") + HostManager.hostIsLinux -> listOf("macos64", "mingw64") + HostManager.hostIsMac -> listOf("mingw64") else -> error("Unknown host") } + val supported = all.filter { !unsupported.contains(it) } + + return NativeTargets(current, supported, unsupported) +} + +class NewMultiplatformIT : BaseGradleIT() { + val gradleVersion = GradleVersionRequired.AtLeast("4.7") + + val nativeHostTargetName = configure().current + val supportedNativeTargets = configure().supported + val unsupportedNativeTargets = configure().unsupported + private fun Project.targetClassesDir(targetName: String, sourceSetName: String = "main") = classesDir(sourceSet = "$targetName/$sourceSetName") @@ -649,12 +663,8 @@ class NewMultiplatformIT : BaseGradleIT() { @Test fun testPublishingOnlySupportedNativeTargets() = with(Project("sample-lib", gradleVersion, "new-mpp-lib-and-app")) { - val (publishedVariant, nonPublishedVariant) = when { - HostManager.hostIsMac -> "macos64" to "linux64" - HostManager.hostIsLinux -> "linux64" to "macos64" - HostManager.hostIsMingw -> "mingw64" to "linux64" - else -> error("Unknown host") - } + val publishedVariant = nativeHostTargetName + val nonPublishedVariant = unsupportedNativeTargets[0] build("publish") { assertSuccessful() From c43024a9c7310ec70539cf4c617e65bc6415599a Mon Sep 17 00:00:00 2001 From: Kirill Shmakov Date: Mon, 25 Feb 2019 14:34:47 +0300 Subject: [PATCH 4/5] Version is backed. --- libraries/stdlib/src/kotlin/util/KotlinVersion.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/stdlib/src/kotlin/util/KotlinVersion.kt b/libraries/stdlib/src/kotlin/util/KotlinVersion.kt index 5cbe3f70807..20b1b1c3764 100644 --- a/libraries/stdlib/src/kotlin/util/KotlinVersion.kt +++ b/libraries/stdlib/src/kotlin/util/KotlinVersion.kt @@ -72,6 +72,6 @@ public class KotlinVersion(val major: Int, val minor: Int, val patch: Int) : Com * Returns the current version of the Kotlin standard library. */ @kotlin.jvm.JvmField - public val CURRENT: KotlinVersion = KotlinVersion(1, 3, 30) // value is written here automatically during build + public val CURRENT: KotlinVersion = KotlinVersion(1, 3, 0) // value is written here automatically during build } } From 2a3473f2757dc825dc88765e10407e24d2362969 Mon Sep 17 00:00:00 2001 From: Kirill Shmakov Date: Mon, 25 Feb 2019 14:43:32 +0300 Subject: [PATCH 5/5] Better string builder. --- .../kotlin/gradle/NewMultiplatformIT.kt | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt index 3e8df44952a..78b81b31058 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt @@ -637,21 +637,21 @@ class NewMultiplatformIT : BaseGradleIT() { projectDir.resolve("repo") } - val dependencyBuilder = StringBuilder() - dependencyBuilder.append("dependencies {\n") - dependencyBuilder.append(" allJvmImplementation 'com.example:sample-lib-jvm6:1.0'\n") - dependencyBuilder.append(" nodeJsMainImplementation 'com.example:sample-lib-nodejs:1.0'\n") - - for (target in supportedNativeTargets) { - dependencyBuilder.append(" ${target}MainImplementation 'com.example:sample-lib-$target:1.0'\n") + val dependencies = buildString { + append("dependencies {\n") + append(" allJvmImplementation 'com.example:sample-lib-jvm6:1.0'\n") + append(" nodeJsMainImplementation 'com.example:sample-lib-nodejs:1.0'\n") + for (target in supportedNativeTargets) { + append(" ${target}MainImplementation 'com.example:sample-lib-$target:1.0'\n") + } + append("}") } - dependencyBuilder.append("}") with(Project("sample-app", gradleVersion, "new-mpp-lib-and-app")) { setupWorkingDir() gradleBuildScript().modify { it.replace("implementation 'com.example:sample-lib:1.0'", "implementation 'com.example:sample-lib-metadata:1.0'") + - "\nrepositories { maven { url '${repoDir.toURI()}' } }\n\n" + dependencyBuilder.toString() + "\nrepositories { maven { url '${repoDir.toURI()}' } }\n\n" + dependencies } build("assemble") {