From ce542531f4cb6fe2bf37f3926ea869722e5acf7d Mon Sep 17 00:00:00 2001 From: Sven Gothel <sgothel@jausoft.com> Date: Thu, 29 Jun 2023 02:18:18 +0200 Subject: GlueGen LibraryOnLoad Config: Generate `JNI_OnLoad(..)` for dynamic and `JNI_OnLoad_<LibraryBasename>(..)` for static libraries and `JVMUtil_GetJNIEnv(..)` to resolve the `JNIEnv*` as used by JavaCallback --- src/java/com/jogamp/gluegen/JavaEmitter.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/java/com/jogamp/gluegen/JavaEmitter.java') diff --git a/src/java/com/jogamp/gluegen/JavaEmitter.java b/src/java/com/jogamp/gluegen/JavaEmitter.java index 3a86239..939ce92 100644 --- a/src/java/com/jogamp/gluegen/JavaEmitter.java +++ b/src/java/com/jogamp/gluegen/JavaEmitter.java @@ -2980,7 +2980,10 @@ public class JavaEmitter implements GlueEmitter { } if (cfg.emitImpl()) { - cUnit().emitHeader(getImplPackageName(), cfg.implClassName(), cfg.customCCode()); + if( !cfg.getJavaCallbackList().isEmpty() && null == cfg.libraryOnLoadName() ) { + LOG.log(WARNING, "JavaCallback used, but no 'LibraryOnLoad' basename specified for JNI_OnLoad(..). Exactly one native code-unit for the library must specify with 'LibraryOnLoad' basename"); + } + cUnit().emitHeader(cfg.libraryOnLoadName(), getImplPackageName(), cfg.implClassName(), cfg.customCCode()); } } catch (final Exception e) { throw new RuntimeException( @@ -3004,6 +3007,9 @@ public class JavaEmitter implements GlueEmitter { javaImplUnit.emitTailCode(); javaImplUnit().emitln("} // end of class " + cfg.implClassName()); } + if (cfg.emitImpl() && null != cfg.libraryOnLoadName() ) { + cUnit.emitJNIOnLoadJNIEnvCode(cfg.libraryOnLoadName()); + } } private JavaType javaType(final Class<?> c) { -- cgit v1.2.3