diff --git a/webrtc-jni/pom.xml b/webrtc-jni/pom.xml
index c207bb0a..32259987 100644
--- a/webrtc-jni/pom.xml
+++ b/webrtc-jni/pom.xml
@@ -111,6 +111,9 @@
+
diff --git a/webrtc-jni/src/main/cpp/CMakeLists.txt b/webrtc-jni/src/main/cpp/CMakeLists.txt
index 297f3926..c171e94a 100644
--- a/webrtc-jni/src/main/cpp/CMakeLists.txt
+++ b/webrtc-jni/src/main/cpp/CMakeLists.txt
@@ -88,6 +88,7 @@ target_include_directories(${PROJECT_NAME}
)
set_target_properties(${PROJECT_NAME} PROPERTIES
+ OUTPUT_NAME "${PROJECT_NAME}-${OUTPUT_NAME_SUFFIX}"
CXX_STANDARD 20
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
diff --git a/webrtc/src/main/java/dev/onvoid/webrtc/internal/NativeLoader.java b/webrtc/src/main/java/dev/onvoid/webrtc/internal/NativeLoader.java
index 60167f72..a46dffdc 100644
--- a/webrtc/src/main/java/dev/onvoid/webrtc/internal/NativeLoader.java
+++ b/webrtc/src/main/java/dev/onvoid/webrtc/internal/NativeLoader.java
@@ -51,7 +51,9 @@ public static void loadLibrary(final String libName) throws Exception {
return;
}
- String libFileName = System.mapLibraryName(libName);
+ String osFamily = getOSFamily();
+ String osArch = getOSArch();
+ String libFileName = System.mapLibraryName(libName + "-" + osFamily + "-" + osArch);
String tempName = removeExtension(libFileName);
String ext = getExtension(libFileName);
@@ -119,4 +121,39 @@ private static int getExtensionIndex(String fileName) {
return extSeparator;
}
+ private static String getOSFamily() {
+ String osName = System.getProperty("os.name").toLowerCase();
+
+ if (osName.startsWith("mac os")) {
+ return "macos";
+ }
+ if (osName.startsWith("linux")) {
+ return "linux";
+ }
+ if (osName.startsWith("windows")) {
+ return "windows";
+ }
+
+ throw new RuntimeException("Unsupported operating system: " + osName);
+ }
+
+ private static String getOSArch() {
+ String osArch = System.getProperty("os.arch").toLowerCase();
+
+ switch (osArch) {
+ case "x86_64":
+ case "x86-64":
+ case "amd64":
+ return "x86_64";
+ case "aarch32":
+ case "arm":
+ return "aarch32";
+ case "aarch64":
+ case "arm64":
+ return "aarch64";
+ }
+
+ throw new RuntimeException("Unsupported CPU architecture: " + osArch);
+ }
+
}