https://kotlinlang.org logo
#multiplatform
Title
# multiplatform
a

Animesh Sahu

05/09/2021, 6:32 AM
How to add cinterop to a common module like for example linux common module?
Copy code
val linuxSettings: org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget.() -> Unit = {
        val main by compilations.getting

        main.cinterops.create("x11") { defFile("src/linuxCommonMain/cinterop/cinterop.def") }
    }
    linuxX64(configure = linuxSettings)
    linuxArm64(configure = linuxSettings)
    linuxArm32Hfp(configure = linuxSettings)
Does not work 🤐 The package is inaccessible from
Copy code
val linuxCommonMain by sourceSets.creating { dependsOn(commonMain) }  <<----
val linuxX64Main by sourceSets.getting { dependsOn(linuxCommonMain) }
val linuxArm64Main by sourceSets.getting { dependsOn(linuxCommonMain) }
val linuxArm32HfpMain by sourceSets.getting { dependsOn(linuxCommonMain) }
I do have
Copy code
kotlin.mpp.enableGranularSourceSetsMetadata=true
kotlin.native.enableDependencyPropagation=false
in gradle.properites, and platform.posix works, so I guess cinterop should've been considered 🤔 But its not blob thinking upside down
a

Animesh Sahu

05/09/2021, 8:09 AM
1.5.20 milestone isn't reached right? Any current workaround, probably pointing same directory to both targets?
I guess old buildscript syntax gonna work, lets try that out
Adding this maven repo works https://maven.pkg.jetbrains.space/kotlin/p/kotlin/bootstrap
Copy code
// settings.gradle.kts
pluginManagement {
    repositories {
        gradlePluginPortal()
        maven("<https://maven.pkg.jetbrains.space/kotlin/p/kotlin/bootstrap>")
    }
}
m

msink

05/10/2021, 3:00 PM
So finally - does it work for you? My attempt failed - https://github.com/msink/kotlin-libui/commit/705f12a24973c22ce06cca3c5371995a1fcd32dc Result - https://github.com/msink/kotlin-libui/runs/2544545675 Here commonizer did run successfully:
Copy code
Task :libui:commonizeNativeDistribution

Kotlin KLIB commonizer: Please wait while preparing libraries.
[Step 1 of 1] Preparing commonized Kotlin/Native libraries for targets [mingw_x64], [mingw_x86] (14 items)
  * Resolved libraries to be commonized in 79ms
  * Build cir tree for [mingw_x64, mingw_x86] in 10s 301ms
  * Commonized declarations for [mingw_x64, mingw_x86] in 1s 537ms
  * Written libraries for [mingw_x64(*), mingw_x86] in 5s 358ms
  * Written libraries for [mingw_x64, mingw_x86(*)] in 4s 707ms
  * Written libraries for [mingw_x64, mingw_x86] in 5s 86ms
  * Commonized target [mingw_x64, mingw_x86] in 1ms
  TOTAL: 27s 71ms
[Step 1 of 1] Preparing commonized Kotlin/Native libraries for targets [mingw_x64], [mingw_x86] (14 items): Done
But compilation failed:
Copy code
> Task :libui:compileNativeMainKotlinMetadata FAILED
w: library included more than once: C:\Users\runneradmin\.konan\kotlin-native-prebuilt-windows-1.5.20-dev-5613\klib\common\stdlib
e: D:\a\kotlin-libui\kotlin-libui\libui\src\nativeMain\kotlin\control.kt: (15, 32): Unresolved reference: uiControl
 ...
a

Animesh Sahu

05/11/2021, 7:42 AM
I haven't actually tried it out 😅 A js issue regarding interface export in 1.5.x was blocking me, so was busy finding a fix for that first.
m

msink

05/11/2021, 1:44 PM
Heh, searched in tests in kotlin repo - here are two new switches in
gradle.properties:
kotlin.mpp.enableCInteropCommonization=true
kotlin.mpp.enableHierarchicalCommonization=true
👀 1
After adding - build still fails, but differently:
Copy code
> Task :libui:compileNativeMainKotlinMetadata FAILED
w: library included more than once: C:\Users\runneradmin\.konan\kotlin-native-prebuilt-windows-1.5.20-dev-5613\klib\common\stdlib
e: D:\a\kotlin-libui\kotlin-libui\libui\src\nativeMain\kotlin\widgets.kt: (366, 34): Unresolved reference: tm
e: D:\a\kotlin-libui\kotlin-libui\libui\src\nativeMain\kotlin\widgets.kt: (369, 34): Unresolved reference: tm
e: D:\a\kotlin-libui\kotlin-libui\libui\src\nativeMain\kotlin\widgets.kt: (372, 16): Unresolved reference: time_t
e: D:\a\kotlin-libui\kotlin-libui\libui\src\nativeMain\kotlin\widgets.kt: (374, 28): Unresolved reference: tm
e: D:\a\kotlin-libui\kotlin-libui\libui\src\nativeMain\kotlin\widgets.kt: (376, 13): Unresolved reference: mktime
e: D:\a\kotlin-libui\kotlin-libui\libui\src\nativeMain\kotlin\widgets.kt: (379, 30): Unresolved reference: time_tVar
e: D:\a\kotlin-libui\kotlin-libui\libui\src\nativeMain\kotlin\widgets.kt: (380, 18): Variable expected
e: D:\a\kotlin-libui\kotlin-libui\libui\src\nativeMain\kotlin\widgets.kt: (381, 22): Unresolved reference: localtime
e: D:\a\kotlin-libui\kotlin-libui\libui\src\nativeMain\kotlin\widgets.kt: (386, 24): Unresolved reference: tm
e: D:\a\kotlin-libui\kotlin-libui\libui\src\nativeMain\kotlin\widgets.kt: (389, 23): The integer literal does not conform to the expected type size_t
e: D:\a\kotlin-libui\kotlin-libui\libui\src\nativeMain\kotlin\window.kt: (134, 41): Unresolved reference: time
Now it doesn't resolve
platform.posix.*
a

Animesh Sahu

05/11/2021, 1:50 PM
w: library included more than once: C:\Users\runneradmin\.konan\kotlin-native-prebuilt-windows-1.5.20-dev-5613\klib\common\stdlib
One evidence, its probably broken in some ways 👀
There's a ticket already saying affected version 1.5.20 actually https://youtrack.jetbrains.com/issue/KT-46257
20 Views