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