From 0c114b9664d97e5bbc98c32bf29050a18b7713d4 Mon Sep 17 00:00:00 2001 From: Sebastian Sellmair Date: Fri, 7 Oct 2022 10:54:18 +0200 Subject: [PATCH] [Gradle][MPP] CommonizerHierarchicalIT: Use targetHierarchy API ^KT-53570 Verification Pending --- .../kotlin/gradle/CommonizerHierarchicalIT.kt | 18 +++-- .../p1/build.gradle.kts | 79 ++++++------------- .../concurrentMain/kotlin/ConcurrentMain.kt | 8 ++ .../kotlin/WindowsMain.kt | 0 .../p1/src/nativeMain/kotlin/NativeMain.kt | 1 + 5 files changed, 43 insertions(+), 63 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeHierarchically/p1/src/concurrentMain/kotlin/ConcurrentMain.kt rename libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeHierarchically/p1/src/{windowsMain => mingwMain}/kotlin/WindowsMain.kt (100%) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerHierarchicalIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerHierarchicalIT.kt index da11b6ecdf7..a492dd33a88 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerHierarchicalIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerHierarchicalIT.kt @@ -39,9 +39,9 @@ class CommonizerHierarchicalIT : BaseGradleIT() { } if (Os.canCompileWindows) { - build(":p1:compileWindowsMainKotlinMetadata") { + build(":p1:compileMingwMainKotlinMetadata") { assertSuccessful() - assertFileExists("p1/build/classes/kotlin/metadata/windowsMain/klib/p1_windowsMain.klib") + assertFileExists("p1/build/classes/kotlin/metadata/mingwMain/klib/p1_mingwMain.klib") } } @@ -59,6 +59,12 @@ class CommonizerHierarchicalIT : BaseGradleIT() { assertFileExists("p1/build/classes/kotlin/metadata/nativeMain/klib/p1_nativeMain.klib") assertNoDuplicateLibraryWarning() } + + build(":p1:compileConcurrentMainKotlinMetadata") { + assertSuccessful() + assertFileExists("p1/build/classes/kotlin/metadata/concurrentMain/default") + assertNoDuplicateLibraryWarning() + } } } } @@ -87,10 +93,10 @@ class CommonizerHierarchicalIT : BaseGradleIT() { } if (Os.canCompileWindows) { - build(":p1:windowsX64MainKlibrary", ":p1:windowsX86MainKlibrary") { + build(":p1:mingwX64MainKlibrary", ":p1:mingwX86MainKlibrary") { assertSuccessful() - assertFileExists("p1/build/classes/kotlin/windowsX64/main/klib/p1.klib") - assertFileExists("p1/build/classes/kotlin/windowsX86/main/klib/p1.klib") + assertFileExists("p1/build/classes/kotlin/mingwX64/main/klib/p1.klib") + assertFileExists("p1/build/classes/kotlin/mingwX86/main/klib/p1.klib") assertNoDuplicateLibraryWarning() } } @@ -167,7 +173,7 @@ class CommonizerHierarchicalIT : BaseGradleIT() { private val os = OperatingSystem.current() val canCompileApple get() = os.isMacOsX val canCompileLinux get() = os.isLinux || os.isMacOsX - val canCompileWindows get() = os.isWindows + val canCompileWindows get() = os.isWindows || os.isMacOsX } private fun CompiledProject.assertNoDuplicateLibraryWarning() = assertNotContains("library included more than once") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeHierarchically/p1/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeHierarchically/p1/build.gradle.kts index 3ad55a91914..924f329653d 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeHierarchically/p1/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeHierarchically/p1/build.gradle.kts @@ -1,20 +1,28 @@ +import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget -operator fun KotlinSourceSet.invoke(builder: SourceSetHierarchyBuilder.() -> Unit): KotlinSourceSet { - SourceSetHierarchyBuilder(this).builder() - return this -} - -class SourceSetHierarchyBuilder(private val node: KotlinSourceSet) { - operator fun KotlinSourceSet.unaryMinus() = this.dependsOn(node) -} - plugins { kotlin("multiplatform") } kotlin { + @OptIn(ExperimentalKotlinGradlePluginApi::class) + targetHierarchy.default { + common { + group("concurrent") { + jvm() + + group("native") { + group("appleAndLinux") { + anyApple() + anyLinux() + } + } + } + } + } + js() jvm() @@ -24,55 +32,12 @@ kotlin { macosX64() macosArm64() - ios() - - mingwX64("windowsX64") - mingwX86("windowsX86") - - val commonMain by sourceSets.getting - val concurrentMain by sourceSets.creating - val jvmMain by sourceSets.getting - val jsMain by sourceSets.getting - val nativeMain by sourceSets.creating - val appleAndLinuxMain by sourceSets.creating - val linuxMain by sourceSets.creating - val linuxX64Main by sourceSets.getting - val linuxArm64Main by sourceSets.getting - val appleMain by sourceSets.creating - val macosMain by sourceSets.creating - val macosX64Main by sourceSets.getting - val macosArm64Main by sourceSets.getting - val iosMain by sourceSets.getting - val windowsMain by sourceSets.creating - val windowsX64Main by sourceSets.getting - val windowsX86Main by sourceSets.getting - - commonMain { - -jsMain - -concurrentMain { - -jvmMain - -nativeMain { - -appleAndLinuxMain { - -appleMain { - -iosMain - -macosMain { - -macosX64Main - -macosArm64Main - } - } - -linuxMain { - -linuxArm64Main - -linuxX64Main - } - } - -windowsMain { - -windowsX64Main - -windowsX86Main - } - } - } - } + iosX64() + iosArm64() + iosSimulatorArm64() + mingwX64() + mingwX86() sourceSets.all { languageSettings.optIn("kotlin.RequiresOptIn") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeHierarchically/p1/src/concurrentMain/kotlin/ConcurrentMain.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeHierarchically/p1/src/concurrentMain/kotlin/ConcurrentMain.kt new file mode 100644 index 00000000000..fd80df0e1c6 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeHierarchically/p1/src/concurrentMain/kotlin/ConcurrentMain.kt @@ -0,0 +1,8 @@ +/* + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +object ConcurrentMain { + operator fun invoke() = println("Hello") +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeHierarchically/p1/src/windowsMain/kotlin/WindowsMain.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeHierarchically/p1/src/mingwMain/kotlin/WindowsMain.kt similarity index 100% rename from libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeHierarchically/p1/src/windowsMain/kotlin/WindowsMain.kt rename to libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeHierarchically/p1/src/mingwMain/kotlin/WindowsMain.kt diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeHierarchically/p1/src/nativeMain/kotlin/NativeMain.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeHierarchically/p1/src/nativeMain/kotlin/NativeMain.kt index 148942f4698..49a086a1c5c 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeHierarchically/p1/src/nativeMain/kotlin/NativeMain.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonizeHierarchically/p1/src/nativeMain/kotlin/NativeMain.kt @@ -7,6 +7,7 @@ import withPosix.getStructFromPosix import withPosix.getStructPointerFromPosix object NativeMain { + val concurrentMainInvocation = ConcurrentMain.invoke() val structFromPosix = getStructFromPosix() val structPointerFromPosix = getStructPointerFromPosix()