Skip to content

Commit b972a62

Browse files
committed
Aarch64 windows support
Adding support for AARCH64 architectures on windows
1 parent 30af980 commit b972a62

File tree

3 files changed

+57
-36
lines changed

3 files changed

+57
-36
lines changed

.github/workflows/publish-jvm.yml

Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -29,35 +29,41 @@ jobs:
2929
job:
3030
# In order to load any added target at runtime, editing the Zenoh class under jvmMain is required.
3131
- {
32-
target: x86_64-unknown-linux-gnu,
33-
arch: amd64,
34-
os: ubuntu-20.04,
35-
build-cmd: "cargo",
36-
}
32+
target: x86_64-unknown-linux-gnu,
33+
arch: amd64,
34+
os: ubuntu-20.04,
35+
build-cmd: "cargo",
36+
}
3737
- {
38-
target: aarch64-unknown-linux-gnu,
39-
arch: arm64,
40-
os: ubuntu-20.04,
41-
build-cmd: "cross",
42-
}
38+
target: aarch64-unknown-linux-gnu,
39+
arch: arm64,
40+
os: ubuntu-20.04,
41+
build-cmd: "cross",
42+
}
4343
- {
44-
target: x86_64-apple-darwin,
45-
arch: darwin,
46-
os: macos-latest,
47-
build-cmd: "cargo",
48-
}
44+
target: x86_64-apple-darwin,
45+
arch: darwin,
46+
os: macos-latest,
47+
build-cmd: "cargo",
48+
}
4949
- {
50-
target: aarch64-apple-darwin,
51-
arch: darwin,
52-
os: macos-latest,
53-
build-cmd: "cargo",
54-
}
50+
target: aarch64-apple-darwin,
51+
arch: darwin,
52+
os: macos-latest,
53+
build-cmd: "cargo",
54+
}
5555
- {
56-
target: x86_64-pc-windows-msvc,
57-
arch: win64,
58-
os: windows-2019,
59-
build-cmd: "cargo",
60-
}
56+
target: x86_64-pc-windows-msvc,
57+
arch: win64,
58+
os: windows-2019,
59+
build-cmd: "cargo",
60+
}
61+
- {
62+
target: aarch64-pc-windows-msvc,
63+
arch: arm64,
64+
os: windows-2019,
65+
build-cmd: "cargo",
66+
}
6167
steps:
6268
- name: Checkout source code
6369
uses: actions/checkout@v4

zenoh-java/src/jvmMain/kotlin/io/zenoh/Target.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@
1414

1515
package io.zenoh
1616

17-
enum class Target {
17+
internal enum class Target {
1818
WINDOWS_X86_64_MSVC,
19+
WINDOWS_AARCH64_MSVC,
1920
LINUX_X86_64,
2021
LINUX_AARCH64,
2122
APPLE_AARCH64,
@@ -24,6 +25,7 @@ enum class Target {
2425
override fun toString(): String {
2526
return when (this) {
2627
WINDOWS_X86_64_MSVC -> "x86_64-pc-windows-msvc"
28+
WINDOWS_AARCH64_MSVC -> "aarch64-pc-windows-msvc"
2729
LINUX_X86_64 -> "x86_64-unknown-linux-gnu"
2830
LINUX_AARCH64 -> "aarch64-unknown-linux-gnu"
2931
APPLE_AARCH64 -> "aarch64-apple-darwin"

zenoh-java/src/jvmMain/kotlin/io/zenoh/Zenoh.kt

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -45,24 +45,37 @@ internal actual object ZenohLoad {
4545
*/
4646
private fun determineTarget(): Result<Target> = runCatching {
4747
val osName = System.getProperty("os.name").lowercase()
48-
val osArch = System.getProperty("os.arch")
48+
val osArch = System.getProperty("os.arch").lowercase()
4949

5050
val target = when {
5151
osName.contains("win") -> when {
52-
osArch.contains("x86_64") || osArch.contains("amd64") -> Target.WINDOWS_X86_64_MSVC
53-
else -> throw UnsupportedOperationException("Unsupported architecture: $osArch")
52+
osArch.contains("x86_64") || osArch.contains("amd64") || osArch.contains("x64") ->
53+
Target.WINDOWS_X86_64_MSVC
54+
55+
osArch.contains("aarch64") || osArch.contains("arm64") ->
56+
Target.WINDOWS_AARCH64_MSVC
57+
58+
else -> throw UnsupportedOperationException("Unsupported architecture on Windows: $osArch")
5459
}
5560

56-
osName.contains("mac") -> when {
57-
osArch.contains("x86_64") || osArch.contains("amd64") -> Target.APPLE_X86_64
58-
osArch.contains("aarch64") -> Target.APPLE_AARCH64
59-
else -> throw UnsupportedOperationException("Unsupported architecture: $osArch")
61+
osName.contains("mac") || osName.contains("darwin") || osName.contains("os x") -> when {
62+
osArch.contains("x86_64") || osArch.contains("amd64") || osArch.contains("x64") ->
63+
Target.APPLE_X86_64
64+
65+
osArch.contains("aarch64") || osArch.contains("arm64") ->
66+
Target.APPLE_AARCH64
67+
68+
else -> throw UnsupportedOperationException("Unsupported architecture on macOS: $osArch")
6069
}
6170

6271
osName.contains("nix") || osName.contains("nux") || osName.contains("aix") -> when {
63-
osArch.contains("x86_64") || osArch.contains("amd64") -> Target.LINUX_X86_64
64-
osArch.contains("aarch64") -> Target.LINUX_AARCH64
65-
else -> throw UnsupportedOperationException("Unsupported architecture: $osArch")
72+
osArch.contains("x86_64") || osArch.contains("amd64") || osArch.contains("x64") ->
73+
Target.LINUX_X86_64
74+
75+
osArch.contains("aarch64") || osArch.contains("arm64") ->
76+
Target.LINUX_AARCH64
77+
78+
else -> throw UnsupportedOperationException("Unsupported architecture on Linux/Unix: $osArch")
6679
}
6780

6881
else -> throw UnsupportedOperationException("Unsupported platform: $osName")

0 commit comments

Comments
 (0)