From f5c48efcf546ba4e08e197ccced6df83b57e1755 Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Fri, 11 Jul 2014 03:05:41 +0200 Subject: Bug 1024: Add fallback for native-jar-file location via classpath In situations, where the native-jar file is not located within the same parent URI as it's java-jar file, our location mechanism fails. This patch adds a classloader based native-jar file location mechanism as a fallback, requiring the native jar file to be included in the users CLASSPATH. Classloader based location algorithm in JNILibLoaderBase.addNativeJarLibsImpl(..): - Extract the 'module-name' from the given classFromJavaJar's package name, i.e. the last package-part: 'jogamp.common.Debug' -> 'common' Hence it is important to pass a 'classFromJavaJar', which last package segment reflects the module-name! - -> , e.g. linux-amd64 -> linux.amd64 (linux/amd64) - Locate class 'jogamp.nativetag...TAG', e.g. 'jogamp.nativetag.common.linux.amd64.TAG' - Use located class's JarFile URI .. continue as usual Injection of above mentioned TAG class via gluegen-cpptasks-base.xml macro 'native.tag.jar': - Creates dummy TAG.java code - Compiles TAG.java - Creates the native-jar file Example: Note that the manifest file uses a matching Extension-Name: Extension-Name: jogamp.nativetag.common --- make/Manifest-rt-natives | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'make/Manifest-rt-natives') diff --git a/make/Manifest-rt-natives b/make/Manifest-rt-natives index d95830e..90c5590 100755 --- a/make/Manifest-rt-natives +++ b/make/Manifest-rt-natives @@ -11,7 +11,7 @@ Implementation-Commit: @SCM_COMMIT@ Implementation-Vendor: JogAmp Community Implementation-Vendor-Id: com.jogamp Implementation-URL: http://jogamp.org/ -Extension-Name: com.jogamp.common +Extension-Name: jogamp.nativetag.common Trusted-Library: true Permissions: all-permissions Application-Library-Allowable-Codebase: * -- cgit v1.2.3