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); + } + }