Skip to content

Commit 92ede25

Browse files
Add native Linux support (#3054)
Co-authored-by: Colin White <colin@colinwhite.me>
1 parent 97e70d0 commit 92ede25

File tree

18 files changed

+51
-23
lines changed

18 files changed

+51
-23
lines changed

buildSrc/src/main/kotlin/coil3/hierarchyTemplate.kt

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ private val hierarchyTemplate = KotlinHierarchyTemplate {
2424
groupNonJvmCommon()
2525
groupNative()
2626
groupNonNative()
27+
groupNonApple()
2728
}
2829
}
2930

@@ -67,20 +68,38 @@ private fun KotlinHierarchyBuilder.groupNative() {
6768
group("native") {
6869
withNative()
6970

70-
group("apple") {
71-
withApple()
71+
groupApple()
72+
groupLinux()
73+
}
74+
}
75+
76+
private fun KotlinHierarchyBuilder.groupApple() {
77+
group("apple") {
78+
withApple()
7279

73-
group("ios") {
74-
withIos()
75-
}
80+
group("ios") {
81+
withIos()
82+
}
7683

77-
group("macos") {
78-
withMacos()
79-
}
84+
group("macos") {
85+
withMacos()
8086
}
8187
}
8288
}
8389

90+
private fun KotlinHierarchyBuilder.groupLinux() {
91+
group("linux") {
92+
withLinux()
93+
}
94+
}
95+
96+
private fun KotlinHierarchyBuilder.groupNonApple() {
97+
group("nonApple") {
98+
groupNonNative()
99+
groupLinux()
100+
}
101+
}
102+
84103
private fun KotlinHierarchyBuilder.groupNonNative() {
85104
group("nonNative") {
86105
groupJsCommon()

buildSrc/src/main/kotlin/coil3/multiplatform.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@ import org.gradle.kotlin.dsl.invoke
88
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
99
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
1010

11-
fun Project.addAllMultiplatformTargets(skikoVersion: Provider<String>, enableWasm: Boolean = true) {
11+
fun Project.addAllMultiplatformTargets(
12+
skikoVersion: Provider<String>,
13+
enableWasm: Boolean = true,
14+
enableNativeLinux: Boolean = true,
15+
) {
1216
plugins.withId("org.jetbrains.kotlin.multiplatform") {
1317
extensions.configure<KotlinMultiplatformExtension> {
1418
applyCoilHierarchyTemplate()
@@ -63,6 +67,11 @@ fun Project.addAllMultiplatformTargets(skikoVersion: Provider<String>, enableWas
6367

6468
macosX64()
6569
macosArm64()
70+
71+
if (enableNativeLinux) {
72+
linuxX64()
73+
linuxArm64()
74+
}
6675
}
6776

6877
applyKotlinJsImplicitDependencyWorkaround(enableWasm)

coil-compose-core/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ plugins {
1212
id("androidx.baselineprofile")
1313
}
1414

15-
addAllMultiplatformTargets(libs.versions.skiko)
15+
addAllMultiplatformTargets(libs.versions.skiko, enableNativeLinux = false)
1616
androidLibrary(name = "coil3.compose.core") {
1717
dependencies {
1818
// https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-test.html

coil-compose/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ plugins {
1010
id("org.jetbrains.kotlin.plugin.compose")
1111
}
1212

13-
addAllMultiplatformTargets(libs.versions.skiko)
13+
addAllMultiplatformTargets(libs.versions.skiko, enableNativeLinux = false)
1414
androidLibrary(name = "coil3.compose.singleton")
1515

1616
kotlin {

coil-core/api/coil-core.klib.api

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Klib ABI Dump
2-
// Targets: [iosArm64, iosSimulatorArm64, iosX64, js, macosArm64, macosX64, wasmJs]
3-
// Alias: apple => [iosArm64, iosSimulatorArm64, iosX64, macosArm64, macosX64]
2+
// Targets: [iosArm64, iosSimulatorArm64, iosX64, js, linuxArm64, linuxX64, macosArm64, macosX64, wasmJs]
3+
// Alias: native => [iosArm64, iosSimulatorArm64, iosX64, linuxArm64, linuxX64, macosArm64, macosX64]
44
// Rendering settings:
55
// - Signature version: 2
66
// - Show manifest properties: true
@@ -1069,5 +1069,5 @@ final inline fun (coil3.util/IntPair).coil3.util/component2(): kotlin/Int // coi
10691069
final inline fun (coil3.util/Logger).coil3.util/log(kotlin/String, coil3.util/Logger.Level, kotlin/Function0<kotlin/String>) // coil3.util/log|log@coil3.util.Logger(kotlin.String;coil3.util.Logger.Level;kotlin.Function0<kotlin.String>){}[0]
10701070
final inline fun (coil3.util/Logger).coil3.util/log(kotlin/String, kotlin/Throwable, kotlin/Function0<kotlin/String>) // coil3.util/log|log@coil3.util.Logger(kotlin.String;kotlin.Throwable;kotlin.Function0<kotlin.String>){}[0]
10711071

1072-
// Targets: [apple]
1072+
// Targets: [native]
10731073
final fun (coil3/ImageLoader).coil3/executeBlocking(coil3.request/ImageRequest): coil3.request/ImageResult // coil3/executeBlocking|executeBlocking@coil3.ImageLoader(coil3.request.ImageRequest){}[0]

coil-core/src/nativeMain/kotlin/coil3/RealImageLoader.native.kt renamed to coil-core/src/appleMain/kotlin/coil3/RealImageLoader.apple.kt

File renamed without changes.

coil-core/src/nativeMain/kotlin/coil3/map/NSURLMapper.kt renamed to coil-core/src/appleMain/kotlin/coil3/map/NSURLMapper.kt

File renamed without changes.

coil-core/src/nativeTest/kotlin/coil3/map/NSURLMapperTest.kt renamed to coil-core/src/appleTest/kotlin/coil3/map/NSURLMapperTest.kt

File renamed without changes.

coil-core/src/nonNativeMain/kotlin/coil3/RealImageLoader.nonNative.kt renamed to coil-core/src/nonAppleMain/kotlin/coil3/RealImageLoader.nonApple.kt

File renamed without changes.

coil-network-cache-control/api/coil-network-cache-control.klib.api

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// Klib ABI Dump
2-
// Targets: [iosArm64, iosSimulatorArm64, iosX64, js, macosArm64, macosX64, wasmJs]
2+
// Targets: [iosArm64, iosSimulatorArm64, iosX64, js, linuxArm64, linuxX64, macosArm64, macosX64, wasmJs]
33
// Rendering settings:
44
// - Signature version: 2
55
// - Show manifest properties: true

0 commit comments

Comments
 (0)