diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/tasks/KotlinNativeCompile.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/tasks/KotlinNativeCompile.kt index 76381e03971..8e599004921 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/tasks/KotlinNativeCompile.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/experimental/tasks/KotlinNativeCompile.kt @@ -2,12 +2,12 @@ package org.jetbrains.kotlin.gradle.plugin.experimental.tasks import org.gradle.api.DefaultTask import org.gradle.api.artifacts.Configuration -import org.gradle.api.file.DirectoryProperty import org.gradle.api.file.FileCollection import org.gradle.api.file.FileSystemLocation -import org.gradle.api.file.RegularFileProperty import org.gradle.api.provider.Provider -import org.gradle.api.tasks.* +import org.gradle.api.tasks.Input +import org.gradle.api.tasks.InputFiles +import org.gradle.api.tasks.TaskAction import org.jetbrains.kotlin.gradle.plugin.KonanCompilerRunner import org.jetbrains.kotlin.gradle.plugin.KonanPlugin import org.jetbrains.kotlin.gradle.plugin.addArg @@ -50,7 +50,13 @@ open class KotlinNativeCompile @Inject constructor(internal val binary: Abstract val prefix = kind.prefix(konanTarget) val suffix = kind.suffix(konanTarget) val baseName = getBaseName().get() - "$root/${binary.names.dirName}/${prefix}${baseName}${suffix}" + + var fileName = "${prefix}${baseName}${suffix}" + if (kind == CompilerOutputKind.FRAMEWORK) { + fileName = fileName.replace('-', '_') + } + + "$root/${binary.names.dirName}/$fileName" } } diff --git a/tools/kotlin-native-gradle-plugin/src/test/kotlin/ExperimentalPluginTests.kt b/tools/kotlin-native-gradle-plugin/src/test/kotlin/ExperimentalPluginTests.kt index 38dd33c1d3e..b4be51e95f7 100644 --- a/tools/kotlin-native-gradle-plugin/src/test/kotlin/ExperimentalPluginTests.kt +++ b/tools/kotlin-native-gradle-plugin/src/test/kotlin/ExperimentalPluginTests.kt @@ -9,8 +9,10 @@ import org.gradle.testkit.runner.TaskOutcome import org.jetbrains.kotlin.gradle.plugin.experimental.internal.KotlinNativeMainComponent import org.jetbrains.kotlin.gradle.plugin.experimental.internal.OutputKind import org.jetbrains.kotlin.gradle.plugin.experimental.plugins.KotlinNativePlugin +import org.jetbrains.kotlin.gradle.plugin.experimental.tasks.KotlinNativeCompile import org.jetbrains.kotlin.konan.target.HostManager import org.jetbrains.kotlin.konan.target.KonanTarget +import org.junit.Assume.assumeTrue import org.junit.Rule import org.junit.rules.TemporaryFolder import java.io.File @@ -464,4 +466,22 @@ class ExperimentalPluginTests { val result2 = project.createRunner().withArguments("assemble").build() assertCompileOutcome(result2, compileTasks, TaskOutcome.UP_TO_DATE) } + + @Test + fun `Framework name should not contain "-" symbols`() = withProject("test-framework-project") { + assumeTrue(HostManager.hostIsMac) + components.withType(KotlinNativeMainComponent::class.java) + .getByName("main") + .outputKinds + .set(listOf(OutputKind.FRAMEWORK, OutputKind.KLIBRARY)) + evaluate() + + val compileTasks = tasks.withType(KotlinNativeCompile::class.java) + val frameworkTask = compileTasks.getByName("compileDebugFrameworkKotlinNative") + val klibraryTask = compileTasks.getByName("compileDebugKlibraryKotlinNative") + + + assertEquals("test_framework_project", frameworkTask.outputFile.nameWithoutExtension) + assertEquals("test-framework-project", klibraryTask.outputFile.nameWithoutExtension) + } } \ No newline at end of file