From 03e1e8d19d1b738ab7067014983cbfaf5e9c4d41 Mon Sep 17 00:00:00 2001 From: Ilya Matveev Date: Thu, 6 Sep 2018 16:45:40 +0700 Subject: [PATCH] Support friend modules in native mpp --- .../kotlin/gradle/plugin/mpp/KotlinCompilationFactory.kt | 1 + .../kotlin/gradle/plugin/mpp/kotlinCompilations.kt | 7 +++++++ .../jetbrains/kotlin/gradle/tasks/KotlinNativeTasks.kt | 9 +++++++++ 3 files changed, 17 insertions(+) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinCompilationFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinCompilationFactory.kt index 80f1fde3b2d..66e72f1caa0 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinCompilationFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinCompilationFactory.kt @@ -86,6 +86,7 @@ class KotlinNativeCompilationFactory( override fun create(name: String): KotlinNativeCompilation = KotlinNativeCompilation(target, name, target.createCompilationOutput(name)).apply { if (name == KotlinCompilation.TEST_COMPILATION_NAME) { + friendCompilationName = KotlinCompilation.MAIN_COMPILATION_NAME outputKinds = mutableListOf(NativeOutputKind.EXECUTABLE) buildTypes = mutableListOf(NativeBuildType.DEBUG) isTestCompilation = true diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt index af49f7841ed..2d8b7018cc5 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt @@ -281,6 +281,13 @@ class KotlinNativeCompilation( var isTestCompilation = false + var friendCompilationName: String? = null + + internal val friendCompilation: KotlinNativeCompilation? + get() = friendCompilationName?.let { + target.compilations.getByName(it) + } + // Native-specific DSL. val extraOpts = mutableListOf() 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 45f186c1c2e..137904096aa 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 @@ -42,6 +42,10 @@ open class KotlinNativeCompile : DefaultTask() { val libraries: FileCollection @InputFiles get() = compilation.compileDependencyFiles + val friendModule: FileCollection? + // It's already taken into account in libraries + @Internal get() = compilation.friendCompilation?.output + @Input var optimized = false @Input @@ -138,6 +142,11 @@ open class KotlinNativeCompile : DefaultTask() { addArg("-l", library.nameWithoutExtension) } + val friends = friendModule?.files + if (friends != null && friends.isNotEmpty()) { + addArg("-friend-modules", friends.map { it.absolutePath }.joinToString(File.pathSeparator)) + } + // TODO: Filter only kt files? addAll(sources.files.map { it.absolutePath }) }