diff options
author | Sven Gothel <[email protected]> | 2014-07-11 03:13:08 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2014-07-11 03:13:08 +0200 |
commit | 0253aaf391faeed95b45fe92ff76fa71041eb511 (patch) | |
tree | 64f76a6904e01b9e60617a34428f681197aa41cb | |
parent | 76f64660f4bf9532ea5c9e00d3eac2ad4c9d998b (diff) |
Bug 1024: Add fallback for native-jar-file location via classpathv2.2.0
Adapt to GlueGen commit f5c48efcf546ba4e08e197ccced6df83b57e1755
-rw-r--r-- | make/build.xml | 36 | ||||
-rw-r--r-- | make/joclversion-natives | 18 | ||||
-rw-r--r-- | src/com/jogamp/opencl/llb/impl/CLDynamicLibraryBundleInfo.java | 2 | ||||
-rw-r--r-- | src/jogamp/opencl/Debug.java | 75 |
4 files changed, 116 insertions, 15 deletions
diff --git a/make/build.xml b/make/build.xml index 60f8003..0136199 100644 --- a/make/build.xml +++ b/make/build.xml @@ -676,14 +676,24 @@ </antcall> <!-- Create Java Web Start jar file from built file --> - <jar destfile="${build}/jar/jocl-natives-${os.and.arch}.jar"> - <fileset dir="../${rootrel.build}/obj"> - <include name="*jocl.${native.library.suffix}" /> - <include name="*soft_oal.${native.library.suffix}" /> - <include name="*openal.${native.library.suffix}" /> - <exclude name="*openal*.1*.${native.library.suffix}" /> - </fileset> - </jar> + <copy file="joclversion-natives" + tofile="${build}/tempversion-natives" + overwrite="true"> + <filterset> + <filter token="VERSION" value="${jogamp.version}"/> + <filter token="BUILD_VERSION" value="${jocl.version}"/> + <filter token="SCM_BRANCH" value="${jocl.build.branch}"/> + <filter token="SCM_COMMIT" value="${jocl.build.commit}"/> + <filter token="BASEVERSION" value="${jogamp.version.base}" /> + <filter token="JAR_CODEBASE_TAG" value="${jogamp.jar.codebase}"/> + </filterset> + </copy> + <native.tag.jar objdir="${build}/obj" + nativejarfile="${build}/jar/jocl-natives-${os.and.arch}.jar" + manifestfile="${build}/tempversion-natives" + module="opencl" + includelibs="*jocl.${native.library.suffix}" /> + <!-- Produce duplicates for different configurations, since non-native-jar aliasing (Bug 1023/Bug 1024) --> <copy file="${build}/jar/jocl-natives-${os.and.arch}.jar" tofile="${build}/jar/jocl-android-natives-${os.and.arch}.jar"/> </target> @@ -695,7 +705,7 @@ <target name="jar" depends="init"> <!-- Prepare the manifest --> <copy file="joclversion" - tofile="tempversion" + tofile="${build}/tempversion" overwrite="true"> <filterset> <filter token="VERSION" value="${jogamp.version}"/> @@ -708,7 +718,7 @@ </copy> <!-- Build the jar excluding any build specific classes. --> - <jar manifest="tempversion" destfile="${jocl.jar}"> + <jar manifest="${build}/tempversion" destfile="${jocl.jar}" filesonly="true"> <fileset dir="${classes}"> <include name="com/jogamp/opencl/**" /> <include name="jogamp/opencl/**" /> @@ -719,7 +729,7 @@ </fileset> </jar> - <jar manifest="tempversion" destfile="${jocl-android.jar}"> + <jar manifest="${build}/tempversion" destfile="${jocl-android.jar}" filesonly="true"> <fileset dir="${classes}"> <include name="com/jogamp/opencl/**" /> <include name="jogamp/opencl/**" /> @@ -730,8 +740,6 @@ </jar> <antcall target="android.package" inheritRefs="true" /> - - <delete file="tempversion"/> </target> <target name="jocl.build.check.aapt" depends="init"> @@ -754,7 +762,7 @@ android.abi="${android.abi}" androidmanifest.path="resources/android/AndroidManifest-jocl.xml" androidresources.path="resources/android/res-jocl" - jarmanifest.path="tempversion" + jarmanifest.path="${build}/tempversion" version.code="${jogamp.version.int}" version.name="${jogamp.version}" /> </target> diff --git a/make/joclversion-natives b/make/joclversion-natives new file mode 100644 index 0000000..d32e89b --- /dev/null +++ b/make/joclversion-natives @@ -0,0 +1,18 @@ +Manifest-Version: 1.0 +Application-Name: Java Bindings for OpenCL +Specification-Title: Java Bindings for OpenCL API Specification +Specification-Version: @BASEVERSION@ +Specification-Vendor: JogAmp Community +Implementation-Title: Java Bindings for OpenCL Runtime Environment +Implementation-Version: @VERSION@ +Implementation-Build: @BUILD_VERSION@ +Implementation-Branch: @SCM_BRANCH@ +Implementation-Commit: @SCM_COMMIT@ +Implementation-Vendor: JogAmp Community +Implementation-URL: http://jogamp.org/ +Extension-Name: jogamp.nativetag.opencl +Implementation-Vendor-Id: com.jogamp +Trusted-Library: true +Permissions: all-permissions +@JAR_CODEBASE_TAG@ + diff --git a/src/com/jogamp/opencl/llb/impl/CLDynamicLibraryBundleInfo.java b/src/com/jogamp/opencl/llb/impl/CLDynamicLibraryBundleInfo.java index 8c4dcc6..59bb072 100644 --- a/src/com/jogamp/opencl/llb/impl/CLDynamicLibraryBundleInfo.java +++ b/src/com/jogamp/opencl/llb/impl/CLDynamicLibraryBundleInfo.java @@ -52,7 +52,7 @@ public final class CLDynamicLibraryBundleInfo implements DynamicLibraryBundleInf if( TempJarCache.isInitialized() ) { // only: jocl.jar -> jocl-natives-<os.and.arch>.jar - JNILibLoaderBase.addNativeJarLibs(new Class<?>[] { CLDynamicLibraryBundleInfo.class }, null ); + JNILibLoaderBase.addNativeJarLibs(new Class<?>[] { jogamp.opencl.Debug.class }, null ); } return null; } diff --git a/src/jogamp/opencl/Debug.java b/src/jogamp/opencl/Debug.java new file mode 100644 index 0000000..edc04c2 --- /dev/null +++ b/src/jogamp/opencl/Debug.java @@ -0,0 +1,75 @@ +/** + * Copyright 2014 JogAmp Community. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of JogAmp Community. + */ + +package jogamp.opencl; + +import java.security.AccessController; +import java.security.PrivilegedAction; + +import com.jogamp.common.util.PropertyAccess; + +/** Helper routines for logging and debugging. */ + +public class Debug extends PropertyAccess { + // Some common properties + private static final boolean verbose; + private static final boolean debugAll; + + static { + AccessController.doPrivileged(new PrivilegedAction<Object>() { + @Override + public Object run() { + PropertyAccess.addTrustedPrefix("jocl."); + return null; + } } ); + + verbose = isPropertyDefined("jocl.verbose", true); + debugAll = isPropertyDefined("jocl.debug", true); + if (verbose) { + final Package p = Package.getPackage("com.jogamp.opencl"); + System.err.println("JOCL specification version " + p.getSpecificationVersion()); + System.err.println("JOCL implementation version " + p.getImplementationVersion()); + System.err.println("JOCL implementation vendor " + p.getImplementationVendor()); + } + } + + /** Ensures static init block has been issues, i.e. if calling through to {@link PropertyAccess#isPropertyDefined(String, boolean)}. */ + public static final void initSingleton() {} + + public static final boolean verbose() { + return verbose; + } + + public static final boolean debugAll() { + return debugAll; + } + + public static final boolean debug(final String subcomponent) { + return debugAll() || isPropertyDefined("jocl.debug." + subcomponent, true); + } +} |