diff --git a/kotlin-native/backend.native/tests/build.gradle b/kotlin-native/backend.native/tests/build.gradle index 626a66b0fba..861ca1489fd 100644 --- a/kotlin-native/backend.native/tests/build.gradle +++ b/kotlin-native/backend.native/tests/build.gradle @@ -4365,12 +4365,31 @@ Task interopTestBase(String name, boolean multiFile, Closure c task.configure(configureClosure) if (task.enabled) { konanArtifacts { - def lib = task.interop - UtilsKt.dependsOnKonanBuildingTask(task, lib, target) + def targetName = target.name + def interopLib = task.interop + UtilsKt.dependsOnKonanBuildingTask(task, interopLib, target) - program(name, targets: [target.name]) { + def lib = "lib$name" + def hasIntermediateLib = task.lib != null + if (hasIntermediateLib) { + // build a library from KonanLinkTest::lib property + library(lib, targets: [targetName]) { + libraries { + artifact interopLib + } + srcFiles task.lib + baseDir "$testOutputLocal/$name" + extraOpts task.flags + extraOpts project.globalTestArgs + } + UtilsKt.dependsOnKonanBuildingTask(task, lib, target) + } + + program(name, targets: [targetName]) { libraries { - artifact lib + artifact interopLib + if (hasIntermediateLib) + klib lib } srcFiles multiFile ? fileTree(task.source) { include '**/*.kt' } : task.getSources() baseDir "$testOutputLocal/$name" diff --git a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/KotlinNativeTest.kt b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/KotlinNativeTest.kt index c1653cf648c..62f00947b47 100644 --- a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/KotlinNativeTest.kt +++ b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/KotlinNativeTest.kt @@ -471,6 +471,10 @@ open class KonanInteropTest : KonanStandaloneTest() { */ @Input lateinit var interop: String + + @Input + @Optional + var lib: String? = null } open class KonanLinkTest : KonanStandaloneTest() {