Matyáš Vítek
01/01/2024, 4:54 PM.def
file for cinterop? I've tried using pkg-config --cflags <libname>
for compilerOpts
and pkg-config --libs <libname>
for linkerOpts
but I end up with an undefined macro when I reload Gradle. Is there something I should do different?Matyáš Vítek
01/01/2024, 5:14 PMloke
01/02/2024, 4:22 AMloke
01/02/2024, 4:23 AMMatyáš Vítek
01/02/2024, 1:34 PMMatyáš Vítek
01/02/2024, 1:37 PMMatyáš Vítek
01/02/2024, 1:38 PMMatyáš Vítek
01/02/2024, 1:42 PMloke
01/02/2024, 1:45 PMMatyáš Vítek
01/02/2024, 2:21 PMException in thread "main" java.lang.Error: /usr/include/x86_64-linux-gnu/sys/cdefs.h:146:34: error: function-like macro '__glibc_clang_prereq' is not defined
at org.jetbrains.kotlin.native.interop.indexer.UtilsKt.ensureNoCompileErrors(Utils.kt:275)
at org.jetbrains.kotlin.native.interop.indexer.IndexerKt.indexDeclarations(Indexer.kt:1246)
at org.jetbrains.kotlin.native.interop.indexer.IndexerKt.buildNativeIndexImpl(Indexer.kt:1229)
at org.jetbrains.kotlin.native.interop.indexer.IndexerKt.buildNativeIndexImpl(Indexer.kt:1225)
at org.jetbrains.kotlin.native.interop.gen.jvm.DefaultPlugin.buildNativeIndex(Plugins.kt:33)
at org.jetbrains.kotlin.native.interop.gen.jvm.MainKt.processCLib(main.kt:311)
at org.jetbrains.kotlin.native.interop.gen.jvm.MainKt.processCLibSafe(main.kt:243)
at org.jetbrains.kotlin.native.interop.gen.jvm.MainKt.access$processCLibSafe(main.kt:1)
at org.jetbrains.kotlin.native.interop.gen.jvm.Interop.interop(main.kt:101)
at org.jetbrains.kotlin.cli.utilities.InteropCompilerKt.invokeInterop(InteropCompiler.kt:47)
at org.jetbrains.kotlin.cli.utilities.MainKt.mainImpl(main.kt:23)
at org.jetbrains.kotlin.cli.utilities.MainKt.main(main.kt:45)
Matyáš Vítek
01/02/2024, 6:40 PMloke
01/03/2024, 2:49 AMloke
01/03/2024, 2:49 AMMatyáš Vítek
01/03/2024, 3:52 PMheaders = gtk/gtk.h
package = libgtk
# pkg-config gtk4 --cflags
compilerOpts.linux = \
-I/usr/include/gtk-4.0 \
-I/usr/include/pango-1.0 \
-I/usr/include/glib-2.0 \
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include \
-I/usr/include/harfbuzz \
-I/usr/include/freetype2 \
-I/usr/include/libpng16 \
-I/usr/include/libmount \
-I/usr/include/blkid \
-I/usr/include/fribidi \
-I/usr/include/cairo \
-I/usr/include/pixman-1 \
-I/usr/include/gdk-pixbuf-2.0 \
-I/usr/include/x86_64-linux-gnu \
-I/usr/include/graphene-1.0 \
-I/usr/lib/x86_64-linux-gnu/graphene-1.0/include \
-mfpmath=sse \
-msse \
-msse2 \
-pthread
# pkg-config gtk4 --libs
linkerOpts.linux = \
-lgtk-4 \
-lpangocairo-1.0 \
-lpango-1.0 \
-lharfbuzz \
-lgdk_pixbuf-2.0 \
-lcairo-gobject \
-lcairo \
-lgraphene-1.0 \
-lgio-2.0 \
-lgobject-2.0 \
-lglib-2.0
Matyáš Vítek
01/03/2024, 3:53 PMplugins {
kotlin("multiplatform") version "1.9.22"
}
group = "dev.matytyma"
version = "1.0-SNAPSHOT"
repositories {
mavenCentral()
}
kotlin {
val hostOs = System.getProperty("os.name")
val isArm64 = System.getProperty("os.arch") == "aarch64"
val nativeTarget = when {
hostOs == "Linux" && isArm64 -> linuxArm64("native")
hostOs == "Linux" && !isArm64 -> linuxX64("native")
else -> throw GradleException("Host OS is not supported by Kotlin GTK.")
}
nativeTarget.apply {
compilations.getByName("main") {
cinterops {
val libgtk by creating
}
}
binaries {
executable {
entryPoint = "main"
}
}
}
sourceSets {
val nativeMain by getting
val nativeTest by getting
}
}
Matyáš Vítek
01/04/2024, 4:09 PMloke
01/05/2024, 8:06 AMMatyáš Vítek
01/05/2024, 6:21 PMloke
01/07/2024, 5:40 AMMatyáš Vítek
01/07/2024, 6:19 PMloke
01/12/2024, 6:31 AMloke
01/12/2024, 6:31 AMMatyáš Vítek
01/25/2024, 4:37 PM