gradle.properties:4 sets:
kotlin.native.enableKlibsCrossCompilation=false
There is no comment on the line, and no rationale anywhere in the history — it arrived in the initial import (eaeaae8, 2026-03-24) alongside the rest of the file, so it has never been revisited.
It is load-bearing for a gap. With cross-compilation disabled, a Linux host cannot build the Apple klibs, so klibApiCheck validates the targets it can build (linuxX64, linuxArm64, mingwX64, js, wasmJs) and infers the five Apple targets from the committed dump instead of rebuilding them. Every apiCheck this project has ever run in CI has been Linux-only, so no Apple ABI change has been verified against its dump by anything except a publish.
The comment at the top of .github/workflows/ci-apple.yml states the constraint as inherent:
Kotlin/Native does not cross-compile iOS/macOS off a Mac
(kotlin.native.enableKlibsCrossCompilation=false)
Those are two different claims joined as one. Compiling and linking Apple binaries off a Mac is genuinely not possible. Cross-compiling Apple klibs is what the flag governs — that is the feature the flag's name refers to, and this repo has it switched off. If the flag can be flipped, apiCheck on Linux would cover all ten klib targets and the Apple ABI would stop depending on someone remembering the ci-apple label.
Unresolved, and deliberately not settled here: whether flipping it actually works in this project. It needs ./gradlew apiCheck on a Linux host with kotlin.native.enableKlibsCrossCompilation=true — a real build, out of scope for a read-only pass. It may well have been set to false for a concrete reason (a cinterop or libcurl dependency that does not cross-compile is the obvious candidate, since ksrpc-ktor-client uses ktor-client-curl on native). If that is the reason, the finding becomes documentation: the flag needs a comment saying so, and ci-apple.yml's comment needs to stop presenting a project setting as a platform limitation.
Either way this does not change what ci-apple is for — it compiles Apple sources, which klib cross-compilation would not replace.
gradle.properties:4sets:There is no comment on the line, and no rationale anywhere in the history — it arrived in the initial import (
eaeaae8, 2026-03-24) alongside the rest of the file, so it has never been revisited.It is load-bearing for a gap. With cross-compilation disabled, a Linux host cannot build the Apple klibs, so
klibApiCheckvalidates the targets it can build (linuxX64,linuxArm64,mingwX64,js,wasmJs) and infers the five Apple targets from the committed dump instead of rebuilding them. EveryapiCheckthis project has ever run in CI has been Linux-only, so no Apple ABI change has been verified against its dump by anything except a publish.The comment at the top of
.github/workflows/ci-apple.ymlstates the constraint as inherent:Those are two different claims joined as one. Compiling and linking Apple binaries off a Mac is genuinely not possible. Cross-compiling Apple klibs is what the flag governs — that is the feature the flag's name refers to, and this repo has it switched off. If the flag can be flipped,
apiCheckon Linux would cover all ten klib targets and the Apple ABI would stop depending on someone remembering theci-applelabel.Unresolved, and deliberately not settled here: whether flipping it actually works in this project. It needs
./gradlew apiCheckon a Linux host withkotlin.native.enableKlibsCrossCompilation=true— a real build, out of scope for a read-only pass. It may well have been set tofalsefor a concrete reason (a cinterop or libcurl dependency that does not cross-compile is the obvious candidate, sinceksrpc-ktor-clientusesktor-client-curlon native). If that is the reason, the finding becomes documentation: the flag needs a comment saying so, andci-apple.yml's comment needs to stop presenting a project setting as a platform limitation.Either way this does not change what
ci-appleis for — it compiles Apple sources, which klib cross-compilation would not replace.