diff --git a/src/main/java/com/aparapi/natives/NativeLoader.java b/src/main/java/com/aparapi/natives/NativeLoader.java index 70ffe14a59e656b726a5d64e157147a2709a2c10..132a9b636ec21b6692f97607cc60b150a20b579f 100644 --- a/src/main/java/com/aparapi/natives/NativeLoader.java +++ b/src/main/java/com/aparapi/natives/NativeLoader.java @@ -20,6 +20,9 @@ import com.aparapi.natives.util.NativeUtils; import java.io.IOException; public class NativeLoader { + private static final String ARCH = System.getProperty("os.arch").toLowerCase(); + private static final String OS = System.getProperty("os.name").toLowerCase(); + public static void load() throws IOException { // String arch = System.getenv("PROCESSOR_ARCHITECTURE"); // String wow64Arch = System.getenv("PROCESSOR_ARCHITEW6432"); @@ -27,10 +30,40 @@ public class NativeLoader { // String realArch = arch.endsWith("64") // || wow64Arch != null && wow64Arch.endsWith("64") // ? "64" : "32"; - final String arch = System.getProperty("os.arch"); - if( arch.contains("64")) - NativeUtils.loadLibraryFromJar("/linux/libaparapi_x86_64.so"); - else - NativeUtils.loadLibraryFromJar("/linux/libaparapi_x86.so"); + if( isUnix() ) { + if( is64Bit() ) + NativeUtils.loadLibraryFromJar("/linux/libaparapi_x86_64.so"); + else + NativeUtils.loadLibraryFromJar("/linux/libaparapi_x86.so"); + } + else if( isMac() ) { + NativeUtils.loadLibraryFromJar("/osx/libaparapi_x86_64.dylib"); + } + } + + private static boolean isWindows() { + return (OS.indexOf("win") >= 0); + } + + private static boolean isMac() { + return (OS.indexOf("mac") >= 0); + } + + private static boolean isUnix() { + return (OS.indexOf("nix") >= 0 || OS.indexOf("nux") >= 0 || OS.indexOf("aix") > 0 ); + } + + private static boolean isSolaris() { + return (OS.indexOf("sunos") >= 0); + } + + private static boolean is64Bit() { + if( ARCH.contains("64")) + return true; + return false; + } + + private static boolean is32Bit() { + return !is64Bit(); } } diff --git a/src/main/resources/osx/libaparapi_x86_64.dylib b/src/main/resources/osx/libaparapi_x86_64.dylib new file mode 100755 index 0000000000000000000000000000000000000000..7723ae1a8f52cb3f457e5101625253b67c72394e Binary files /dev/null and b/src/main/resources/osx/libaparapi_x86_64.dylib differ