| Summary: | Add fallback for native-jar-file location via classpath | ||
|---|---|---|---|
| Product: | [JogAmp] General | Reporter: | Sven Gothel <sgothel> |
| Component: | builds | Assignee: | Sven Gothel <sgothel> |
| Status: | RESOLVED FIXED | ||
| Severity: | enhancement | ||
| Priority: | --- | ||
| Version: | unspecified | ||
| Hardware: | All | ||
| OS: | all | ||
| Type: | --- | SCM Refs: |
gluegen f5c48efcf546ba4e08e197ccced6df83b57e1755
joal 3c2409e9cc23b0f22c813b6903277997b46db826
jocl 0253aaf391faeed95b45fe92ff76fa71041eb511
jogl 37760af388303834e359703aad9562ce6165845f
|
| Workaround: | --- | ||
| Bug Depends on: | |||
| Bug Blocks: | 1024, 1145 | ||
|
Description
Sven Gothel
2014-07-11 15:28:15 CEST
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!
- <os.and.arch> -> <os_and_arch_dot>,
e.g. linux-amd64 -> linux.amd64 (linux/amd64)
- Locate class 'jogamp.nativetag.<module-name>.<os_and_arch_dot>.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:
<native.tag.jar objdir="${build}/obj"
nativejarfile="${build}/gluegen-rt-natives-${os.and.arch}.jar"
manifestfile="${build}/Manifest-rt-natives.temp"
module="common"
includelibs="*gluegen-rt.${native.library.suffix}" />
Note that the manifest file uses a matching Extension-Name:
Extension-Name: jogamp.nativetag.common
|