Skip to content

Commit 7cc7266

Browse files
authored
Merge pull request #381 from kdroidFilter/refactor/build-restructure-nucleus-pattern
Remove JNA, add Linux ARM64 support and GraalVM native-image compatibility
2 parents 17aeb12 + 897f1fc commit 7cc7266

86 files changed

Lines changed: 26462 additions & 2703 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.editorconfig

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
root = true
2+
3+
[*]
4+
charset = utf-8
5+
indent_size = 4
6+
insert_final_newline = true
7+
trim_trailing_whitespace = true
8+
9+
[*{.yml,yaml}]
10+
indent_style = space
11+
indent_size = 2
12+
13+
[*.{kt,kts}]
14+
max_line_length = 120
15+
ktlint_standard_backing-property-naming = disabled
16+
ktlint_standard_function-naming = disabled
17+
18+
[**/generated/**]
19+
ktlint = disabled
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
name: Build Native Libraries
2+
3+
on:
4+
workflow_call:
5+
6+
jobs:
7+
build-native-macos:
8+
runs-on: macos-latest
9+
steps:
10+
- name: Checkout code
11+
uses: actions/checkout@v4
12+
13+
- name: Set up JDK
14+
uses: actions/setup-java@v4
15+
with:
16+
java-version: '17'
17+
distribution: 'temurin'
18+
19+
- name: Build macOS native libraries
20+
working-directory: src/native/macos
21+
run: bash build.sh
22+
env:
23+
NATIVE_LIBS_OUTPUT_DIR: ${{ github.workspace }}/build/nativeLibs
24+
25+
- name: Verify macOS natives
26+
run: |
27+
test -f build/nativeLibs/darwin-aarch64/libMacTray.dylib
28+
test -f build/nativeLibs/darwin-x86-64/libMacTray.dylib
29+
ls -la build/nativeLibs/darwin-aarch64/
30+
ls -la build/nativeLibs/darwin-x86-64/
31+
32+
- name: Upload macOS ARM64 library
33+
uses: actions/upload-artifact@v4
34+
with:
35+
name: native-darwin-aarch64
36+
path: build/nativeLibs/darwin-aarch64/libMacTray.dylib
37+
retention-days: 1
38+
39+
- name: Upload macOS x86_64 library
40+
uses: actions/upload-artifact@v4
41+
with:
42+
name: native-darwin-x86-64
43+
path: build/nativeLibs/darwin-x86-64/libMacTray.dylib
44+
retention-days: 1
45+
46+
build-native-linux:
47+
runs-on: ${{ matrix.os }}
48+
strategy:
49+
matrix:
50+
include:
51+
- os: ubuntu-latest
52+
arch: x86-64
53+
- os: ubuntu-24.04-arm
54+
arch: aarch64
55+
steps:
56+
- name: Checkout code
57+
uses: actions/checkout@v4
58+
59+
- name: Set up JDK
60+
uses: actions/setup-java@v4
61+
with:
62+
java-version: '17'
63+
distribution: 'temurin'
64+
65+
- name: Install dependencies
66+
run: |
67+
sudo apt-get update
68+
sudo apt-get install -y libsystemd-dev
69+
70+
- name: Build Linux native library
71+
working-directory: src/native/linux
72+
run: bash build.sh
73+
env:
74+
NATIVE_LIBS_OUTPUT_DIR: ${{ github.workspace }}/build/nativeLibs
75+
76+
- name: Verify Linux natives
77+
run: |
78+
test -f build/nativeLibs/linux-${{ matrix.arch }}/libLinuxTray.so
79+
ls -la build/nativeLibs/linux-${{ matrix.arch }}/
80+
81+
- name: Upload Linux library
82+
uses: actions/upload-artifact@v4
83+
with:
84+
name: native-linux-${{ matrix.arch }}
85+
path: build/nativeLibs/linux-${{ matrix.arch }}/libLinuxTray.so
86+
retention-days: 1
87+
88+
build-native-windows:
89+
runs-on: windows-latest
90+
steps:
91+
- name: Checkout code
92+
uses: actions/checkout@v4
93+
94+
- name: Set up JDK
95+
uses: actions/setup-java@v4
96+
with:
97+
java-version: '17'
98+
distribution: 'temurin'
99+
100+
- name: Build Windows native libraries
101+
working-directory: src/native/windows
102+
run: cmd /c build.bat
103+
env:
104+
NATIVE_LIBS_OUTPUT_DIR: ${{ github.workspace }}/build/nativeLibs
105+
106+
- name: Verify Windows natives
107+
shell: bash
108+
run: |
109+
test -f build/nativeLibs/win32-x86-64/WinTray.dll
110+
test -f build/nativeLibs/win32-arm64/WinTray.dll
111+
ls -la build/nativeLibs/win32-x86-64/
112+
ls -la build/nativeLibs/win32-arm64/
113+
114+
- name: Upload Windows x64 library
115+
uses: actions/upload-artifact@v4
116+
with:
117+
name: native-win32-x86-64
118+
path: build/nativeLibs/win32-x86-64/WinTray.dll
119+
retention-days: 1
120+
121+
- name: Upload Windows ARM64 library
122+
uses: actions/upload-artifact@v4
123+
with:
124+
name: native-win32-arm64
125+
path: build/nativeLibs/win32-arm64/WinTray.dll
126+
retention-days: 1
Lines changed: 57 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,78 @@
11
name: PR Build Check
22

33
on:
4+
push:
5+
branches: [master]
46
pull_request:
57
branches: [master]
68

9+
concurrency:
10+
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
11+
cancel-in-progress: true
12+
713
jobs:
8-
build-native-macos:
9-
runs-on: macos-latest
14+
build-natives:
15+
uses: ./.github/workflows/build-natives.yaml
16+
17+
gradle:
18+
needs: [build-natives]
19+
runs-on: ubuntu-latest
1020
steps:
1121
- name: Checkout code
1222
uses: actions/checkout@v4
23+
24+
- name: Download macOS ARM64 library
25+
uses: actions/download-artifact@v4
1326
with:
14-
submodules: recursive
27+
name: native-darwin-aarch64
28+
path: src/jvmMain/resources/composetray/native/darwin-aarch64/
1529

16-
- name: Build macOS native libraries
17-
working-directory: maclib
18-
run: bash build.sh
30+
- name: Download macOS x86_64 library
31+
uses: actions/download-artifact@v4
32+
with:
33+
name: native-darwin-x86-64
34+
path: src/jvmMain/resources/composetray/native/darwin-x86-64/
1935

20-
build-native-linux:
21-
runs-on: ubuntu-latest
22-
steps:
23-
- name: Checkout code
24-
uses: actions/checkout@v4
36+
- name: Download Linux x86_64 library
37+
uses: actions/download-artifact@v4
2538
with:
26-
submodules: recursive
39+
name: native-linux-x86-64
40+
path: src/jvmMain/resources/composetray/native/linux-x86-64/
2741

28-
- name: Setup Go
29-
uses: actions/setup-go@v5
42+
- name: Download Linux aarch64 library
43+
uses: actions/download-artifact@v4
3044
with:
31-
go-version: 'stable'
45+
name: native-linux-aarch64
46+
path: src/jvmMain/resources/composetray/native/linux-aarch64/
3247

33-
- name: Install dependencies
34-
run: |
35-
sudo apt-get update
36-
sudo apt-get install -y libgtk-3-dev libappindicator3-dev
48+
- name: Download Windows x64 library
49+
uses: actions/download-artifact@v4
50+
with:
51+
name: native-win32-x86-64
52+
path: src/jvmMain/resources/composetray/native/win32-x86-64/
3753

38-
- name: Build Linux native library
39-
working-directory: linuxlib
40-
run: bash build.sh
54+
- name: Download Windows ARM64 library
55+
uses: actions/download-artifact@v4
56+
with:
57+
name: native-win32-arm64
58+
path: src/jvmMain/resources/composetray/native/win32-arm64/
4159

42-
build-native-windows:
43-
runs-on: windows-latest
44-
steps:
45-
- name: Checkout code
46-
uses: actions/checkout@v4
60+
- name: Verify native libraries
61+
run: |
62+
echo "=== Verifying native libraries ==="
63+
test -f src/jvmMain/resources/composetray/native/darwin-aarch64/libMacTray.dylib
64+
test -f src/jvmMain/resources/composetray/native/darwin-x86-64/libMacTray.dylib
65+
test -f src/jvmMain/resources/composetray/native/linux-x86-64/libLinuxTray.so
66+
test -f src/jvmMain/resources/composetray/native/linux-aarch64/libLinuxTray.so
67+
test -f src/jvmMain/resources/composetray/native/win32-x86-64/WinTray.dll
68+
test -f src/jvmMain/resources/composetray/native/win32-arm64/WinTray.dll
69+
echo "All native libraries present."
70+
71+
- name: Set up JDK
72+
uses: actions/setup-java@v4
4773
with:
48-
submodules: recursive
74+
java-version: '17'
75+
distribution: 'temurin'
4976

50-
- name: Build Windows native libraries
51-
working-directory: winlib
52-
run: cmd /c build.bat
77+
- name: Build
78+
run: ./gradlew build --continue

0 commit comments

Comments
 (0)