From 7d63bff221cdf9d1a77a3ebbd78073c45c052978 Mon Sep 17 00:00:00 2001 From: Jeffrey Phillips Freeman <jeffrey.freeman@syncleus.com> Date: Sat, 10 Dec 2016 16:31:26 -0500 Subject: [PATCH] Fixed aprapi so it no longer needs the JNI library to be locally installed. --- pom.xml | 8 ++++++ .../aparapi/internal/opencl/OpenCLLoader.java | 28 ++++++------------- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/pom.xml b/pom.xml index 5e732ea4..182938d0 100644 --- a/pom.xml +++ b/pom.xml @@ -65,6 +65,14 @@ </developer> </developers> + <dependencies> + <dependency> + <groupId>com.aparapi</groupId> + <artifactId>aparapi-jni</artifactId> + <version>1.0.0-SNAPSHOT</version> + </dependency> + </dependencies> + <build> <defaultGoal>package</defaultGoal> <plugins> diff --git a/src/main/java/com/aparapi/internal/opencl/OpenCLLoader.java b/src/main/java/com/aparapi/internal/opencl/OpenCLLoader.java index abdce55f..4e9f0a6f 100644 --- a/src/main/java/com/aparapi/internal/opencl/OpenCLLoader.java +++ b/src/main/java/com/aparapi/internal/opencl/OpenCLLoader.java @@ -15,11 +15,13 @@ */ package com.aparapi.internal.opencl; +import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import com.aparapi.Config; import com.aparapi.internal.jni.OpenCLJNI; +import com.aparapi.natives.NativeLoader; /** * This class is intended to be a singleton which determines if OpenCL is available upon startup of Aparapi @@ -37,30 +39,16 @@ public class OpenCLLoader extends OpenCLJNI{ logger.fine("Using agent!"); openCLAvailable = true; } else { - final String arch = System.getProperty("os.arch"); - logger.fine("arch = " + arch); - String aparapiLibraryName = null; - - if (arch.equals("amd64") || arch.equals("x86_64")) { - aparapiLibraryName = "aparapi_x86_64"; - } else if (arch.equals("x86") || arch.equals("i386")) { - aparapiLibraryName = "aparapi_x86"; - } else { - logger.warning("Expected property os.arch to contain amd64, x86_64, x86 or i386 but instead found " + arch - + " as a result we don't know which aparapi to attempt to load."); - } - if (aparapiLibraryName != null) { - logger.fine("attempting to load aparapi shared lib " + aparapiLibraryName); - try { - Runtime.getRuntime().loadLibrary(aparapiLibraryName); + NativeLoader.load(); + System.out.println("Aparapi JNI loaded successfully."); openCLAvailable = true; - } catch (final UnsatisfiedLinkError e) { - logger.log(Level.SEVERE, "Check your environment. Failed to load aparapi native library " + aparapiLibraryName + } + catch (final IOException e) { + logger.log(Level.SEVERE, "Check your environment. Failed to load aparapi native library " + " or possibly failed to locate opencl native library (opencl.dll/opencl.so)." - + " Ensure that both are in your PATH (windows) or in LD_LIBRARY_PATH (linux)."); + + " Ensure that OpenCL is in your PATH (windows) or in LD_LIBRARY_PATH (linux)."); } - } } } -- GitLab