diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CinteropIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CinteropIT.kt index 3877d3c943a..54ae3573f28 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CinteropIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CinteropIT.kt @@ -7,8 +7,9 @@ package org.jetbrains.kotlin.gradle.native import org.gradle.util.GradleVersion import org.jetbrains.kotlin.gradle.testbase.* +import org.junit.jupiter.api.condition.OS -@MppGradlePluginTests +@NativeGradlePluginTests class CinteropIT : KGPBaseTest() { @GradleTest @@ -35,4 +36,21 @@ class CinteropIT : KGPBaseTest() { } } } + + @GradleTest + @OsCondition(supportedOn = [OS.MAC], enabledOnCI = [OS.MAC]) + fun `cinterop gives hint about -fmodules`(gradleVersion: GradleVersion) { + nativeProject("cinterop-fmodules", gradleVersion = gradleVersion) { + val defFile = projectPath.resolve("native_lib/nlib.def").toFile() + + buildAndFail(":cinteropNlibIosX64") { + assertOutputContains("Try adding `-compiler-option -fmodules` to cinterop.") + } + + defFile.appendText("\ncompilerOpts = -fmodules") + build(":cinteropNlibIosX64") { + assertOutputDoesNotContain("Try adding `-compiler-option -fmodules` to cinterop.") + } + } + } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/cinterop-fmodules/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/cinterop-fmodules/build.gradle.kts new file mode 100644 index 00000000000..4a26198316c --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/cinterop-fmodules/build.gradle.kts @@ -0,0 +1,19 @@ +plugins { + kotlin("multiplatform") +} + +repositories { + mavenLocal() + mavenCentral() +} + +kotlin { + iosX64 { + compilations.getByName("main") { + cinterops.create("nlib") { + defFile(file("$projectDir/native_lib/nlib.def")) + includeDirs("$projectDir/native_lib") + } + } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/cinterop-fmodules/native_lib/bar.h b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/cinterop-fmodules/native_lib/bar.h new file mode 100644 index 00000000000..e69de29bb2d diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/cinterop-fmodules/native_lib/foo.h b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/cinterop-fmodules/native_lib/foo.h new file mode 100644 index 00000000000..756dd128e0c --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/cinterop-fmodules/native_lib/foo.h @@ -0,0 +1 @@ +@import Bar; \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/cinterop-fmodules/native_lib/module.modulemap b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/cinterop-fmodules/native_lib/module.modulemap new file mode 100644 index 00000000000..7d1453bba36 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/cinterop-fmodules/native_lib/module.modulemap @@ -0,0 +1,6 @@ +module Bar { + header "bar.h" +} +module Foo { + header "foo.h" +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/cinterop-fmodules/native_lib/nlib.def b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/cinterop-fmodules/native_lib/nlib.def new file mode 100644 index 00000000000..87af2d612a9 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/cinterop-fmodules/native_lib/nlib.def @@ -0,0 +1,3 @@ +modules = Foo +package = lib.Foo +language = Objective-C