diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerIT.kt index ec4c2bb164a..32ab803cb7c 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/CommonizerIT.kt @@ -700,6 +700,20 @@ open class CommonizerIT : BaseGradleIT() { } } + @Test + fun `test KT-57796 commonization with two cinterop commonizer groups`() { + with(Project("commonize-kt-57796-twoCInteropCommonizerGroups")) { + build(":app:commonizeCIntero") { + assertSuccessful() + assertTasksExecuted(":lib:transformCommonMainCInteropDependenciesMetadata") + assertTasksExecuted(":lib:commonizeCInterop") + assertTasksExecuted(":app:transformCommonMainCInteropDependenciesMetadata") + assertTasksExecuted(":app:commonizeCInterop") + } + } + } + + @Test fun `test KT-56729 commonization with library containing two roots`() { with(Project("commonize-kt-56729-consume-library-with-two-roots")) { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/app/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/app/build.gradle.kts new file mode 100644 index 00000000000..5bcdc66707e --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/app/build.gradle.kts @@ -0,0 +1,24 @@ +import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget + +plugins { + kotlin("multiplatform") +} + +kotlin { + linuxX64() + linuxArm64() + macosX64() + macosArm64() + + targetHierarchy.default() + + targets.withType().all { + compilations.getByName("main").cinterops.create("libapp") { + headers(file("libapp.h")) + } + } + + sourceSets.commonMain.get().dependencies { + implementation(project(":lib")) + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/app/libapp.h b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/app/libapp.h new file mode 100644 index 00000000000..1967876d3e5 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/app/libapp.h @@ -0,0 +1 @@ +void libapp(); \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/app/src/nativeInterop/cinterop/libapp.def b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/app/src/nativeInterop/cinterop/libapp.def new file mode 100644 index 00000000000..e69de29bb2d diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/build.gradle.kts new file mode 100644 index 00000000000..f556befce79 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/build.gradle.kts @@ -0,0 +1,10 @@ +plugins { + kotlin("multiplatform").apply(false) +} + +allprojects { + repositories { + mavenLocal() + mavenCentral() + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/gradle.properties b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/gradle.properties new file mode 100644 index 00000000000..2db016ae4e4 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/gradle.properties @@ -0,0 +1 @@ +kotlin.mpp.enableCInteropCommonization=true \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/lib/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/lib/build.gradle.kts new file mode 100644 index 00000000000..419b9862a01 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/lib/build.gradle.kts @@ -0,0 +1,27 @@ +plugins { + kotlin("multiplatform") +} + +kotlin { + linuxX64() + linuxArm64() + + macosX64() + macosArm64() + + targetHierarchy.default() + + /* first cinterop commonizer group */ + listOf(macosX64(), macosArm64()).forEach { target -> + target.compilations.getByName("main").cinterops.create("libmacos") { + headers(file("libmacos.h")) + } + } + + /* Second cinterop commonizer group */ + listOf(linuxX64(), linuxArm64()).forEach { target -> + target.compilations.getByName("main").cinterops.create("liblinux") { + headers(file("liblinux.h")) + } + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/lib/liblinux.h b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/lib/liblinux.h new file mode 100644 index 00000000000..3ac707a4b16 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/lib/liblinux.h @@ -0,0 +1 @@ +void liblinux(); \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/lib/libmacos.h b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/lib/libmacos.h new file mode 100644 index 00000000000..bcad094c43b --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/lib/libmacos.h @@ -0,0 +1 @@ +void libmacos(); \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/lib/src/nativeInterop/cinterop/liblinux.def b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/lib/src/nativeInterop/cinterop/liblinux.def new file mode 100644 index 00000000000..e69de29bb2d diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/lib/src/nativeInterop/cinterop/libmacos.def b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/lib/src/nativeInterop/cinterop/libmacos.def new file mode 100644 index 00000000000..e69de29bb2d diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/settings.gradle.kts new file mode 100644 index 00000000000..87b1985caaf --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/commonize-kt-57796-twoCInteropCommonizerGroups/settings.gradle.kts @@ -0,0 +1,2 @@ +include(":app") +include(":lib") \ No newline at end of file