diff --git a/.github/actions/build/action.yml b/.github/actions/build/action.yml
index 00ff34ba..a9f167c5 100644
--- a/.github/actions/build/action.yml
+++ b/.github/actions/build/action.yml
@@ -56,13 +56,15 @@ runs:
mvn package -DskipTests -Plinux-aarch32
elif [ "${{ inputs.platform-name }}" == "linux_arm64" ]; then
mvn package -DskipTests -Plinux-aarch64
+ elif [ "${{ inputs.platform-name }}" == "windows_arm64" ]; then
+ mvn package -DskipTests -Pwindows-aarch64
else
mvn package -DskipTests
fi
shell: bash
- name: Test
- if: ${{ inputs.platform-name != 'linux_arm' && inputs.platform-name != 'linux_arm64' }}
+ if: ${{ inputs.platform-name != 'linux_arm' && inputs.platform-name != 'linux_arm64' && inputs.platform-name != 'windows_arm64' }}
run: mvn -B jar:jar surefire:test
shell: bash
@@ -76,6 +78,8 @@ runs:
mvn deploy -DskipTests -Plinux-aarch32
elif [ "${{ inputs.platform-name }}" == "linux_arm64" ]; then
mvn deploy -DskipTests -Plinux-aarch64
+ elif [ "${{ inputs.platform-name }}" == "windows_arm64" ]; then
+ mvn deploy -DskipTests -Pwindows-aarch64
else
mvn deploy -DskipTests
fi
diff --git a/.github/actions/release/action.yml b/.github/actions/release/action.yml
index 8508c025..fa20ed67 100644
--- a/.github/actions/release/action.yml
+++ b/.github/actions/release/action.yml
@@ -44,13 +44,15 @@ runs:
mvn package -DskipTests -Plinux-aarch32
elif [ "${{ inputs.platform-name }}" == "linux_arm64" ]; then
mvn package -DskipTests -Plinux-aarch64
+ elif [ "${{ inputs.platform-name }}" == "windows_arm64" ]; then
+ mvn package -DskipTests -Pwindows-aarch64
else
mvn package -DskipTests
fi
shell: bash
- name: Test
- if: ${{ inputs.platform-name != 'linux_arm' && inputs.platform-name != 'linux_arm64' }}
+ if: ${{ inputs.platform-name != 'linux_arm' && inputs.platform-name != 'linux_arm64' && inputs.platform-name != 'windows_arm64' }}
run: mvn -B jar:jar surefire:test
shell: bash
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 03a2c2b0..926ebaeb 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -27,6 +27,8 @@ jobs:
platform:
- name: windows_x86_64
runs-on: windows-2022
+ - name: windows_arm64
+ runs-on: windows-2022
java: [17]
runs-on: ${{ matrix.platform.runs-on }}
steps:
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index da5187e0..0684e52f 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -139,6 +139,8 @@ jobs:
platform:
- name: windows_x86_64
runs-on: windows-2022
+ - name: windows_arm64
+ runs-on: windows-2022
java: [17]
runs-on: ${{ matrix.platform.runs-on }}
steps:
@@ -314,7 +316,7 @@ jobs:
version="${{ steps.release-version.outputs.version }}"
status=0
- for classifier in windows-x86_64 linux-x86_64 linux-aarch64 \
+ for classifier in windows-x86_64 windows-aarch64 linux-x86_64 linux-aarch64 \
linux-aarch32 macos-x86_64 macos-aarch64; do
if [ ! -f "natives/webrtc-java-$version-$classifier.jar" ]; then
echo "::error::Missing native library jar for $classifier"
diff --git a/docs/guide/get-started.md b/docs/guide/get-started.md
index 2fb828a7..810ace00 100644
--- a/docs/guide/get-started.md
+++ b/docs/guide/get-started.md
@@ -44,6 +44,7 @@ If you encounter issues loading the native library "webrtc-java", you can declar
Complete list of available classifiers:
- windows-x86_64
+- windows-aarch64
- macos-x86_64
- macos-aarch64
- linux-x86_64
@@ -93,6 +94,7 @@ For specific platforms, add the appropriate classifier:
```groovy
implementation group: "dev.onvoid.webrtc", name: "webrtc-java", version: "{{ VERSION }}", classifier: "windows-x86_64"
+implementation group: "dev.onvoid.webrtc", name: "webrtc-java", version: "{{ VERSION }}", classifier: "windows-aarch64"
implementation group: "dev.onvoid.webrtc", name: "webrtc-java", version: "{{ VERSION }}", classifier: "macos-x86_64"
implementation group: "dev.onvoid.webrtc", name: "webrtc-java", version: "{{ VERSION }}", classifier: "macos-aarch64"
implementation group: "dev.onvoid.webrtc", name: "webrtc-java", version: "{{ VERSION }}", classifier: "linux-x86_64"
diff --git a/pom.xml b/pom.xml
index a2bb56b5..0cd5ae7f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -282,6 +282,13 @@
webrtc.windows.x86_64
+
+ windows-aarch64
+
+ windows-aarch64
+ webrtc.windows.aarch64
+
+
linux-x86_64
diff --git a/webrtc-jni/pom.xml b/webrtc-jni/pom.xml
index 85cfd49c..fd4e5aeb 100644
--- a/webrtc-jni/pom.xml
+++ b/webrtc-jni/pom.xml
@@ -216,5 +216,13 @@
toolchain/x86_64-macos-cross.cmake
+
+ windows-aarch64
+
+ -AARM64
+ ${cmake.build.type}
+ toolchain/aarch64-windows-clang.cmake
+
+
diff --git a/webrtc-jni/src/main/cpp/CMakeLists.txt b/webrtc-jni/src/main/cpp/CMakeLists.txt
index 5051ace4..d2df35b3 100644
--- a/webrtc-jni/src/main/cpp/CMakeLists.txt
+++ b/webrtc-jni/src/main/cpp/CMakeLists.txt
@@ -79,7 +79,14 @@ list(APPEND SOURCES
add_library(${PROJECT_NAME} SHARED ${SOURCES})
# Introduced since WebRTC branch 7204 and Clang 20.
-target_compile_options(${PROJECT_NAME} PRIVATE -Wno-nullability-completeness)
+if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ if(MSVC)
+ # clang-cl on Windows requires the /clang: prefix to avoid interpreting /W... as a warning level flag
+ target_compile_options(${PROJECT_NAME} PRIVATE /clang:-Wno-nullability-completeness)
+ else()
+ target_compile_options(${PROJECT_NAME} PRIVATE -Wno-nullability-completeness)
+ endif()
+endif()
target_include_directories(${PROJECT_NAME}
PRIVATE
diff --git a/webrtc-jni/src/main/cpp/toolchain/aarch64-windows-clang.cmake b/webrtc-jni/src/main/cpp/toolchain/aarch64-windows-clang.cmake
new file mode 100644
index 00000000..2a198f77
--- /dev/null
+++ b/webrtc-jni/src/main/cpp/toolchain/aarch64-windows-clang.cmake
@@ -0,0 +1,5 @@
+set(CMAKE_SYSTEM_NAME Windows)
+set(CMAKE_SYSTEM_PROCESSOR aarch64)
+set(TARGET_CPU "arm64")
+
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MT /EHsc -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCPP_BUILDING_LIBRARY -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE")
\ No newline at end of file
diff --git a/webrtc-jni/src/main/cpp/toolchain/x86_64-windows-clang.cmake b/webrtc-jni/src/main/cpp/toolchain/x86_64-windows-clang.cmake
index 28253095..3d079b46 100644
--- a/webrtc-jni/src/main/cpp/toolchain/x86_64-windows-clang.cmake
+++ b/webrtc-jni/src/main/cpp/toolchain/x86_64-windows-clang.cmake
@@ -1 +1,5 @@
+set(CMAKE_SYSTEM_NAME Windows)
+set(CMAKE_SYSTEM_PROCESSOR x86_64)
+set(TARGET_CPU "x64")
+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MT /EHsc -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCPP_BUILDING_LIBRARY -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE")
diff --git a/webrtc/pom.xml b/webrtc/pom.xml
index 6708fa07..00946f51 100644
--- a/webrtc/pom.xml
+++ b/webrtc/pom.xml
@@ -101,6 +101,11 @@
jar
windows-x86_64
+
+ ${natives.dir}/${project.name}-${project.version}-windows-aarch64.jar
+ jar
+ windows-aarch64
+
${natives.dir}/${project.name}-${project.version}-linux-x86_64.jar
jar