From 77f60d6d6c6d17e165ea8d57fe60cfbc17f1c7e5 Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Wed, 29 Jan 2020 21:19:58 +0300 Subject: [PATCH] Enable KlibBasedMppIT by default and on all host (using Linux targets) --- .../kotlin/gradle/HierarchicalMppIT.kt | 24 +++++++++---------- .../jetbrains/kotlin/gradle/KlibBasedMppIT.kt | 19 ++++++--------- .../common-klib-lib-and-app/build.gradle.kts | 15 +++++++++--- .../kotlin/LibLinuxMain.kt} | 9 +++++-- 4 files changed, 38 insertions(+), 29 deletions(-) rename libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/common-klib-lib-and-app/src/{iosMain/kotlin/LibIosMain.kt => linuxMain/kotlin/LibLinuxMain.kt} (53%) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt index 7aa7a70732c..87b87f530a6 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt @@ -167,14 +167,14 @@ class HierarchicalMppIT : BaseGradleIT() { publishedMetadataJar.checkAllEntryNamesArePresent( "META-INF/$MULTIPLATFORM_PROJECT_METADATA_FILE_NAME", - "commonMain/manifest", - "commonMain/linkdata/package_com.example/", + "commonMain/default/manifest", + "commonMain/default/linkdata/package_com.example/", - "jvmAndJsMain/manifest", - "jvmAndJsMain/linkdata/package_com.example/", + "jvmAndJsMain/default/manifest", + "jvmAndJsMain/default/linkdata/package_com.example/", - "linuxAndJsMain/manifest", - "linuxAndJsMain/linkdata/package_com.example/" + "linuxAndJsMain/default/manifest", + "linuxAndJsMain/default/linkdata/package_com.example/" ) val parsedProjectStructureMetadata: KotlinProjectStructureMetadata = publishedMetadataJar.getProjectStructureMetadata() @@ -205,14 +205,14 @@ class HierarchicalMppIT : BaseGradleIT() { publishedMetadataJar.checkAllEntryNamesArePresent( "META-INF/$MULTIPLATFORM_PROJECT_METADATA_FILE_NAME", - "commonMain/manifest", - "commonMain/linkdata/package_com.example.bar/", + "commonMain/default/manifest", + "commonMain/default/linkdata/package_com.example.bar/", - "jvmAndJsMain/manifest", - "jvmAndJsMain/linkdata/package_com.example.bar/", + "jvmAndJsMain/default/manifest", + "jvmAndJsMain/default/linkdata/package_com.example.bar/", - "linuxAndJsMain/manifest", - "linuxAndJsMain/linkdata/package_com.example.bar/" + "linuxAndJsMain/default/manifest", + "linuxAndJsMain/default/linkdata/package_com.example.bar/" ) val parsedProjectStructureMetadata: KotlinProjectStructureMetadata = publishedMetadataJar.getProjectStructureMetadata() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KlibBasedMppIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KlibBasedMppIT.kt index 507233bf353..ac330cb307b 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KlibBasedMppIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KlibBasedMppIT.kt @@ -12,10 +12,6 @@ import java.io.File import kotlin.test.Test import kotlin.test.assertFalse -/** FIXME (sergey.igushkin): please enable these tests back as soon as the Kotlin/Native version that is bundled with the - * Kotlin distribution supports compilation to klib and targetless klibs. - */ -@Ignore class KlibBasedMppIT : BaseGradleIT() { override val defaultGradleVersion = GradleVersionRequired.AtLeast("6.0") @@ -54,8 +50,6 @@ class KlibBasedMppIT : BaseGradleIT() { private val dependencyModuleName = "project-dep" private fun testBuildWithDependency(configureDependency: Project.() -> Unit) = with(Project("common-klib-lib-and-app")) { - Assume.assumeTrue(HostManager.hostIsMac) - embedProject(Project("common-klib-lib-and-app"), renameTo = dependencyModuleName) gradleBuildScript().modify(::transformBuildScriptWithPluginsDsl) @@ -75,10 +69,10 @@ class KlibBasedMppIT : BaseGradleIT() { } """.trimIndent()) - projectDir.resolve("src/iosMain/kotlin/LibIosMainUsage.kt").appendText("\n" + """ + projectDir.resolve("src/linuxMain/kotlin/LibLinuxMainUsage.kt").appendText("\n" + """ package com.h0tk3y.hmpp.klib.demo.test - import com.projectdep.libIosMainFun as libFun + import com.projectdep.libLinuxMainFun as libFun private fun useProjectDep() { libFun() @@ -87,7 +81,7 @@ class KlibBasedMppIT : BaseGradleIT() { val tasksToExecute = listOf( ":compileJvmAndJsMainKotlinMetadata", - ":compileIosMainKotlinMetadata" + ":compileLinuxMainKotlinMetadata" ) build("assemble") { @@ -95,8 +89,9 @@ class KlibBasedMppIT : BaseGradleIT() { assertTasksExecuted(*tasksToExecute.toTypedArray()) - assertFileExists("build/classes/kotlin/metadata/jvmAndJsMain/manifest") - assertFileExists("build/classes/kotlin/metadata/iosMain/${projectName}_iosMain.klib") + assertFileExists("build/classes/kotlin/metadata/commonMain/default/manifest") + assertFileExists("build/classes/kotlin/metadata/jvmAndJsMain/default/manifest") + assertFileExists("build/classes/kotlin/metadata/linuxMain/${projectName}_linuxMain.klib") // Check that the common and JVM+JS source sets don't receive the Kotlin/Native stdlib in the classpath: run { @@ -155,7 +150,7 @@ class KlibBasedMppIT : BaseGradleIT() { setupDependencies(this@with) - val compileNativeMetadataTaskName = "compileIosMainKotlinMetadata" + val compileNativeMetadataTaskName = "compileLinuxMainKotlinMetadata" build(":$compileNativeMetadataTaskName") { assertSuccessful() } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/common-klib-lib-and-app/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/common-klib-lib-and-app/build.gradle.kts index 4ff208de23e..3cc6d5946c3 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/common-klib-lib-and-app/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/common-klib-lib-and-app/build.gradle.kts @@ -15,7 +15,8 @@ kotlin { jvm() js() - ios() + linuxX64() + linuxArm64() sourceSets { val commonMain by getting { @@ -24,6 +25,10 @@ kotlin { } } + val linuxMain by creating { + dependsOn(commonMain) + } + val jvmAndJsMain by creating { dependsOn(commonMain) } @@ -41,6 +46,10 @@ kotlin { implementation(kotlin("stdlib-js")) } } + + configure(listOf(linuxX64(), linuxArm64())) { + compilations["main"].defaultSourceSet.dependsOn(linuxMain) + } } } @@ -52,8 +61,8 @@ publishing { tasks { val skipCompilationOfTargets = setOf( - "iosArm64", - "iosX64" + "linuxX64", + "linuxArm64" ) all { val target = name.removePrefix("compileKotlin").decapitalize() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/common-klib-lib-and-app/src/iosMain/kotlin/LibIosMain.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/common-klib-lib-and-app/src/linuxMain/kotlin/LibLinuxMain.kt similarity index 53% rename from libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/common-klib-lib-and-app/src/iosMain/kotlin/LibIosMain.kt rename to libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/common-klib-lib-and-app/src/linuxMain/kotlin/LibLinuxMain.kt index 7f5ca177c33..4f8ad838a4d 100755 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/common-klib-lib-and-app/src/iosMain/kotlin/LibIosMain.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/common-klib-lib-and-app/src/linuxMain/kotlin/LibLinuxMain.kt @@ -1,3 +1,8 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + package com.h0tk3y.hmpp.klib.demo import kotlinx.cinterop.CArrayPointer @@ -9,9 +14,9 @@ actual class LibCommonMainExpect : LibCommonMainIface { println(CArrayPointer::class) } - fun additionalFunInIosActual() { + fun additionalFunInLinuxActual() { println("additional fun in lib iosMain") } } -fun libIosMainFun(): LibCommonMainIface = LibCommonMainExpect() \ No newline at end of file +fun libLinuxMainFun(): LibCommonMainIface = LibCommonMainExpect() \ No newline at end of file