Split klib and cinterop outputs.

So Gradle 7 will not complain that some tasks using klib or cinterop
should depend on both tasks producing klib and cinterop, while they
don't need both.

^KT-44949 In Progress
This commit is contained in:
Yahor Berdnikau
2021-02-18 15:20:40 +01:00
parent 2ed98ee732
commit 2a8e2613a2
5 changed files with 11 additions and 11 deletions
@@ -174,7 +174,7 @@ class KlibBasedMppIT : BaseGradleIT() {
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")
assertFileExists("build/classes/kotlin/metadata/linuxMain/klib/${projectName}_linuxMain.klib")
// Check that the common and JVM+JS source sets don't receive the Kotlin/Native stdlib in the classpath:
run {
@@ -1628,7 +1628,7 @@ class NewMultiplatformIT : BaseGradleIT() {
)
// Native:
assertFileExists("build/classes/kotlin/linux64/integrationTest/new-mpp-associate-compilations_integrationTest.klib")
assertFileExists("build/classes/kotlin/linux64/integrationTest/klib/new-mpp-associate-compilations_integrationTest.klib")
}
gradleBuildScript().appendText(
@@ -1706,10 +1706,10 @@ class NewMultiplatformIT : BaseGradleIT() {
}
}
val interopManifest = getManifest("foo/build/classes/kotlin/linux/main/foo-cinterop-bar.klib")
val interopManifest = getManifest("foo/build/classes/kotlin/linux/main/cinterop/foo-cinterop-bar.klib")
assertEquals("org.sample.one:foo-cinterop-bar", interopManifest[KLIB_PROPERTY_UNIQUE_NAME])
val nativeManifest = getManifest("foo/build/classes/kotlin/linux/main/foo.klib")
val nativeManifest = getManifest("foo/build/classes/kotlin/linux/main/klib/foo.klib")
assertEquals("org.sample.one:foo", nativeManifest[KLIB_PROPERTY_UNIQUE_NAME])
// Check the short name that is used as a prefix in generated ObjC headers.
assertEquals("foo", nativeManifest[KLIB_PROPERTY_SHORT_NAME])
@@ -166,7 +166,7 @@ class GeneralNativeIT : BaseGradleIT() {
val klibPrefix = CompilerOutputKind.LIBRARY.prefix(HostManager.host)
val klibSuffix = CompilerOutputKind.LIBRARY.suffix(HostManager.host)
val klibPath = "${targetClassesDir("host")}${klibPrefix}native-library$klibSuffix"
val klibPath = "${targetClassesDir("host")}${klibPrefix}/klib/native-library$klibSuffix"
val linkTasks = listOf(
":linkDebugSharedHost",
@@ -772,9 +772,9 @@ class GeneralNativeIT : BaseGradleIT() {
@Test
fun testCinterop() = with(transformNativeTestProjectWithPluginDsl("native-cinterop")) {
fun libraryFiles(projectName: String, cinteropName: String) = listOf(
"$projectName/build/classes/kotlin/host/main/${projectName}-cinterop-$cinteropName.klib",
"$projectName/build/classes/kotlin/host/main/${projectName}.klib",
"$projectName/build/classes/kotlin/host/test/${projectName}_test.klib",
"$projectName/build/classes/kotlin/host/main/cinterop/${projectName}-cinterop-$cinteropName.klib",
"$projectName/build/classes/kotlin/host/main/klib/${projectName}.klib",
"$projectName/build/classes/kotlin/host/test/klib/${projectName}_test.klib",
)
// Enable info log to see cinterop environment variables.
@@ -94,7 +94,7 @@ tasks {
if (target in skipCompilationOfTargets) {
actions.clear()
doLast {
val destinationFile = project.buildDir.resolve("classes/kotlin/$target/main/${project.name}.klib")
val destinationFile = project.buildDir.resolve("classes/kotlin/$target/main/klib/${project.name}.klib")
destinationFile.parentFile.mkdirs()
println("Writing a dummy klib to $destinationFile")
destinationFile.createNewFile()
@@ -260,7 +260,7 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget>(
"compilation for target '${compilation.platformType.name}'."
it.enabled = compilation.konanTarget.enabledOnCurrentHost
it.destinationDir = klibOutputDirectory(compilation)
it.destinationDir = klibOutputDirectory(compilation).resolve("klib")
}
@@ -292,7 +292,7 @@ open class KotlinNativeTargetConfigurator<T : KotlinNativeTarget>(
compilation.cinterops.all { interop ->
val interopTask = registerTask<CInteropProcess>(interop.interopProcessingTaskName) {
it.settings = interop
it.destinationDir = provider { klibOutputDirectory(compilation) }
it.destinationDir = provider { klibOutputDirectory(compilation).resolve("cinterop") }
it.group = INTEROP_GROUP
it.description = "Generates Kotlin/Native interop library '${interop.name}' " +
"for compilation '${compilation.name}'" +