I’m working on a Kotlin multiplatform project (GitHub - rhdunn/xqt-kotlinx-json-rpc: Kotlin multiplatform JSON-RPC 2.0 library) and am trying to figure out how to get the different native konan targets building on GitHub Actions.
In my build.gradle.kts
script, I currently have:
val nativeTarget = when (HostManager.host) {
KonanTarget.MACOS_ARM64 -> kotlin.macosArm64("native")
KonanTarget.MACOS_X64 -> kotlin.macosX64("native")
KonanTarget.LINUX_X64 -> kotlin.linuxX64("native")
KonanTarget.MINGW_X64 -> kotlin.mingwX64("native")
else -> throw GradleException("Kotlin/Native build target '${HostManager.host.name}' is not supported.")
}
// Fix the suffix for maven artifacts, so they are -[target] and not -native.
publishing.publications.getByName("native", MavenPublication::class) {
artifactId = project.nativeArtifactId(nativeTarget.konanTarget)
}
I know that I need to have an option to pass the target to the build and modify HostManager.host
to use that (or HostManager.host
if it is not set). I then need to extend the when block above to list/map all native targets. – This I know how to do.
In my GitHub Actions I have the following matrix definition:
matrix:
konan-target: [
# Tier 1 -- https://kotlinlang.org/docs/native-target-support.html#tier-1
linuxX64,
macosX64,
# Tier 3 -- https://kotlinlang.org/docs/native-target-support.html#tier-3
mingwX64,
]
include:
- konan-target: linuxX64
os: ubuntu-latest
- konan-target: macosX64
os: macos-latest
- konan-target: mingwX64
os: windows-latest
This is the bit I don’t know how to get working. Specifically, how to configure the GitHub Action for each of the tier 1-3 targets in Kotlin/Native target support | Kotlin Documentation.
At the moment, I’m just doing:
runs-on: ${{ matrix.os }}
to run the build on the correct host OS.