Skip to content

Commit 1f88b73

Browse files
SanlorngKonyaco
andauthored
[feat](fluent) Add macOS native support (#133)
* [feat](fluent) Add macOS native support * Refactor: Centralize macOS distribution settings * Add macos native ci * feat(macos): Apply backdrop to window * [build](macos) Add workaround for including resources in macOS native target - Updated the Compose Multiplatform plugin alias from `compose` to `compose-multiplatform` in all relevant build scripts and the version catalog. - Added the Compose Multiplatform plugin as a dependency in the `build-plugin` module. --------- Co-authored-by: KonYaco <atwzj233@gmail.com>
1 parent 7bf400e commit 1f88b73

File tree

24 files changed

+998
-160
lines changed

24 files changed

+998
-160
lines changed

.github/workflows/multiplatform_snapshot_build.yml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,12 @@ jobs:
4141
- type: macOS
4242
desktop: dmg
4343
os: macos-latest
44+
- type: macosArm64
45+
native: dmg
46+
os: macos-latest
47+
- type: macosX64
48+
native: dmg
49+
os: macos-13
4450
- type: iOS
4551
iOS: ipa
4652
# workaround runner version for iPhoneOS sdk 18.2
@@ -127,6 +133,18 @@ jobs:
127133
name: Gallery-${{ matrix.type }}-${{ github.run_id }}
128134
path: ${{github.workspace}}/gallery/build/compose/binaries/main-release/${{ matrix.desktop }}/*.${{ matrix.desktop }}
129135

136+
# Desktop Native Build Action
137+
- name: Build Gallery for ${{ matrix.type }}
138+
if: ${{ matrix.native }}
139+
run: |
140+
./gradlew :gallery:packageDistributionNativeReleaseForCurrentOS
141+
- name: Upload desktop native build artifacts
142+
if: ${{ matrix.native }}
143+
uses: actions/upload-artifact@v4
144+
with:
145+
name: Gallery-${{ matrix.type }}-${{ github.run_id }}
146+
path: ${{github.workspace}}/gallery/build/compose/binaries/main/**/*.${{ matrix.native }}
147+
130148
# iOS Build Action, Note: Due to the long build time, the iOS build only build the debug version.
131149
- name: Set up Xcode
132150
if: ${{ matrix.iOS }}

README.md

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,14 @@ Thank you for using our library. We look forward to receiving your feedback and
2121

2222
### Supported Kotlin Targets
2323

24-
| Target | Platform |
25-
|:------------------|:----------------------|
26-
| desktop | Linux, macOS, Windows |
27-
| iosX64 | iPhone, iPad |
28-
| iosArm64 | iPhone, iPad |
29-
| iosSimulatorArm64 | iOS Simulator |
30-
| androidTarget | Android Devices |
31-
| wasmJs | Web Browsers |
32-
| js | Web Browsers |
24+
| Target | Platform |
25+
|:-----------------|:---------------------------|
26+
| desktop | Linux, macOS, Windows |
27+
| macos | macOS |
28+
| ios | iPhone, iPad, iOS Simulator|
29+
| android | Android Devices |
30+
| wasmJs | Web Browsers |
31+
| js | Web Browsers |
3332

3433
## Quick Start
3534

build-plugin/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ dependencies {
1414
implementation(kotlin("gradle-plugin", libs.versions.kotlin.get()))
1515
gradlePluginImplementation(libs.plugins.android.kotlin.multiplatform.library.get())
1616
gradlePluginImplementation(libs.plugins.maven.publish.get())
17+
gradlePluginImplementation(libs.plugins.compose.multiplatform.get())
1718
}
1819

1920
fun DependencyHandler.gradlePluginImplementation(plugin: PluginDependency) {

build-plugin/src/main/java/io/github/composefluent/plugin/build/BuildExtension.kt

Lines changed: 52 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,35 +26,81 @@ fun KotlinMultiplatformExtension.applyTargets(namespaceModule: String = "") {
2626
iosX64()
2727
iosArm64()
2828
iosSimulatorArm64()
29+
macosArm64()
30+
macosX64()
2931

3032
applyHierarchyTemplate {
3133
sourceSetTrees(KotlinSourceSetTree.main, KotlinSourceSetTree.test)
3234

3335
common {
3436
group("skiko") {
35-
withCompilations {
36-
it.target.name != "android"
37-
}
37+
group("jvm")
38+
group("native")
39+
group("web")
3840
}
3941

40-
group("jvm") {
41-
withJvm()
42+
group("android") {
4243
withAndroidTarget()
4344
withCompilations { it.target.name == "android" }
4445
}
4546

47+
group("jvm") {
48+
withJvm()
49+
}
50+
51+
group("jvmCommon") {
52+
group("jvm")
53+
group("android")
54+
}
55+
4656
group("web") {
4757
withJs()
4858
withWasmJs()
4959
}
5060

61+
group("native") {
62+
group("apple")
63+
group("mingw")
64+
group("linux")
65+
}
66+
5167
group("apple") {
52-
withApple()
68+
group("ios")
69+
group("macos")
70+
group("tvos")
71+
group("watchos")
72+
}
73+
74+
group("tvos") {
75+
withTvos()
76+
}
77+
78+
group("watchos") {
79+
withWatchos()
5380
}
5481

5582
group("ios") {
5683
withIos()
5784
}
85+
86+
group("macos") {
87+
withMacos()
88+
}
89+
90+
group("mingw") {
91+
withMingw()
92+
}
93+
94+
group("linux") {
95+
withLinux()
96+
}
97+
98+
group("desktopCommon") {
99+
group("macos")
100+
group("mingw")
101+
group("linux")
102+
group("jvm")
103+
}
58104
}
59105
}
60106
}

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import io.github.composefluent.plugin.build.BuildConfig
33
plugins {
44
alias(libs.plugins.kotlin.multiplatform) apply false
55
alias(libs.plugins.kotlin.compose)
6-
alias(libs.plugins.compose) apply false
6+
alias(libs.plugins.compose.multiplatform) apply false
77
alias(libs.plugins.compose.hotReload) apply false
88
alias(libs.plugins.android.kotlin.multiplatform.library) apply false
99
alias(libs.plugins.android.application) apply false

fluent-icons-core/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import io.github.composefluent.plugin.build.applyTargets
44
plugins {
55
alias(libs.plugins.kotlin.multiplatform)
66
alias(libs.plugins.kotlin.compose)
7-
alias(libs.plugins.compose)
7+
alias(libs.plugins.compose.multiplatform)
88
alias(libs.plugins.android.kotlin.multiplatform.library)
99
alias(libs.plugins.ksp)
1010
alias(libs.plugins.maven.publish)

fluent-icons-extended/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import io.github.composefluent.plugin.build.applyTargets
44
plugins {
55
alias(libs.plugins.kotlin.multiplatform)
66
alias(libs.plugins.kotlin.compose)
7-
alias(libs.plugins.compose)
7+
alias(libs.plugins.compose.multiplatform)
88
alias(libs.plugins.android.kotlin.multiplatform.library)
99
alias(libs.plugins.ksp)
1010
alias(libs.plugins.maven.publish)

fluent/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import io.github.composefluent.plugin.build.applyTargets
44
plugins {
55
alias(libs.plugins.kotlin.multiplatform)
66
alias(libs.plugins.kotlin.compose)
7-
alias(libs.plugins.compose)
7+
alias(libs.plugins.compose.multiplatform)
88
alias(libs.plugins.android.kotlin.multiplatform.library)
99
alias(libs.plugins.ksp)
1010
alias(libs.plugins.maven.publish)

fluent/src/appleMain/kotlin/io/github/composefluent/component/FontIcon.apple.kt

Lines changed: 0 additions & 8 deletions
This file was deleted.

fluent/src/desktopMain/kotlin/io/github/composefluent/component/FontIcon.desktop.kt

Lines changed: 0 additions & 32 deletions
This file was deleted.

0 commit comments

Comments
 (0)