PatchSet 6896 
Date: 2005/09/14 04:38:08
Author: robilad
Branch: HEAD
Tag: (none) 
Log:
Fixed native library loading on Cygwin

Members: 
        ChangeLog:1.4417->1.4418 
        libraries/javalib/java/lang/Runtime.java:1.36->1.37 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.4417 kaffe/ChangeLog:1.4418
--- kaffe/ChangeLog:1.4417      Tue Sep 13 21:37:43 2005
+++ kaffe/ChangeLog     Wed Sep 14 04:38:08 2005
@@ -1,5 +1,15 @@
 2005-09-13  Dalibor Topic  <[EMAIL PROTECTED]>
 
+       * libraries/java/java/lang/Runtime.java
+       (loadLibrary) Try multiple different 
+       prefixes and suffixes if library can't be loaded
+       using the mapped name. This takes care of 
+       Cygwin DLLs, Libtool modules and hopefully
+       will work for dylibs, jnilibs and similar
+       DSO variants as well.
+
+2005-09-13  Dalibor Topic  <[EMAIL PROTECTED]>
+
        * kaffe/scripts/javap.in,
        kaffe/scripts/native2ascii.in,
        kaffe/scripts/rmic.in,
Index: kaffe/libraries/javalib/java/lang/Runtime.java
diff -u kaffe/libraries/javalib/java/lang/Runtime.java:1.36 
kaffe/libraries/javalib/java/lang/Runtime.java:1.37
--- kaffe/libraries/javalib/java/lang/Runtime.java:1.36 Sun Aug 21 00:41:02 2005
+++ kaffe/libraries/javalib/java/lang/Runtime.java      Wed Sep 14 04:37:46 2005
@@ -760,6 +760,26 @@
        for (int i = 0; i < libpath.length; i++)
          if (loadLib(libpath[i] + filename, loader) != 0)
            return;
+
+       // OK. That did not work. Let's be creative and try different
+       // prefix-suffix combinations.
+       // NB: Yes, this is a wasteful implementation.
+
+       String [] prefixes = {"lib",
+                             "cyg", 
+                             "" };
+       String [] suffixes = {".so",
+                             ".dll", 
+                             ".la",
+                             ".a",
+                             ".dylib", 
+                             ".jnilib",
+                             ".dll.a"};
+       for (int j = 0; j < prefixes.length; j++)
+           for (int k = 0; k < suffixes.length; k++)
+               for (int i = 0; i < libpath.length; i++)
+                   if (loadLib(libpath[i] + prefixes[j] + libname + 
suffixes[k], loader) != 0)
+                       return;
       }
     throw new UnsatisfiedLinkError("Native library `" + libname
       + "' not found (as file `" + filename 

_______________________________________________
kaffe mailing list
[email protected]
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to