Bläddra i källkod

Cleanup NativeLibraryLoader & fix wrong library path (#1967)

* Cleanup NativeLibraryLoader

* Fix wrong library path
Ali-RS 2 år sedan
förälder
incheckning
5e859d59a3

+ 30 - 65
jme3-desktop/src/main/java/com/jme3/system/NativeLibraryLoader.java

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009-2022 jMonkeyEngine
+ * Copyright (c) 2009-2023 jMonkeyEngine
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -75,7 +75,7 @@ public final class NativeLibraryLoader {
     private static File extractionFolder = null;
     
     private static final HashMap<NativeLibrary.Key, NativeLibrary> nativeLibraryMap
-            = new HashMap<NativeLibrary.Key, NativeLibrary>();
+            = new HashMap<>();
     
     /**
      * Register a new known library.
@@ -120,55 +120,25 @@ public final class NativeLibraryLoader {
     }
     
     static {
-        // LWJGL
-        registerNativeLibrary("lwjgl", Platform.Windows32, "native/windows/lwjgl.dll");
-        registerNativeLibrary("lwjgl", Platform.Windows64, "native/windows/lwjgl64.dll");
-        registerNativeLibrary("lwjgl", Platform.Linux32,   "native/linux/liblwjgl.so");
-        registerNativeLibrary("lwjgl", Platform.Linux64,   "native/linux/liblwjgl64.so");
-        registerNativeLibrary("lwjgl", Platform.MacOSX32,  "native/macosx/liblwjgl.dylib");
-        registerNativeLibrary("lwjgl", Platform.MacOSX64,  "native/macosx/liblwjgl.dylib");
+        // Note: LWJGL 3 handles its native library extracting & loading using
+        // its own SharedLibraryLoader.
 
-        // OpenAL
-        // For OSX: Need to add lib prefix when extracting
-        registerNativeLibrary("openal", Platform.Windows32, "native/windows/OpenAL32.dll");
-        registerNativeLibrary("openal", Platform.Windows64, "native/windows/OpenAL64.dll");
-        registerNativeLibrary("openal", Platform.Linux32,   "native/linux/libopenal.so");
-        registerNativeLibrary("openal", Platform.Linux64,   "native/linux/libopenal64.so");
-        registerNativeLibrary("openal", Platform.MacOSX32,  "native/macosx/openal.dylib", "libopenal.dylib");
-        registerNativeLibrary("openal", Platform.MacOSX64,  "native/macosx/openal.dylib", "libopenal.dylib");
-
-        // LWJGL 3.x
-        registerNativeLibrary("lwjgl3", Platform.Windows32, "native/windows/lwjgl32.dll");
-        registerNativeLibrary("lwjgl3", Platform.Windows64, "native/windows/lwjgl.dll");
-        registerNativeLibrary("lwjgl3", Platform.Linux32, "native/linux/liblwjgl32.so");
-        registerNativeLibrary("lwjgl3", Platform.Linux64, "native/linux/liblwjgl.so");
-        registerNativeLibrary("lwjgl3", Platform.MacOSX32, "native/macosx/liblwjgl.dylib");
-        registerNativeLibrary("lwjgl3", Platform.MacOSX64, "native/macosx/liblwjgl.dylib");
-
-        // GLFW for LWJGL 3.x
-        registerNativeLibrary("glfw-lwjgl3", Platform.Windows32, "native/windows/glfw32.dll");
-        registerNativeLibrary("glfw-lwjgl3", Platform.Windows64, "native/windows/glfw.dll");
-        registerNativeLibrary("glfw-lwjgl3", Platform.Linux32, "native/linux/libglfw32.so");
-        registerNativeLibrary("glfw-lwjgl3", Platform.Linux64, "native/linux/libglfw.so");
-        registerNativeLibrary("glfw-lwjgl3", Platform.MacOSX32, "native/macosx/libglfw.dylib");
-        registerNativeLibrary("glfw-lwjgl3", Platform.MacOSX64, "native/macosx/libglfw.dylib");
-
-        // jemalloc for LWJGL 3.x
-        registerNativeLibrary("jemalloc-lwjgl3", Platform.Windows32, "native/windows/jemalloc32.dll");
-        registerNativeLibrary("jemalloc-lwjgl3", Platform.Windows64, "native/windows/jemalloc.dll");
-        registerNativeLibrary("jemalloc-lwjgl3", Platform.Linux32, "native/linux/libjemalloc32.so");
-        registerNativeLibrary("jemalloc-lwjgl3", Platform.Linux64, "native/linux/libjemalloc.so");
-        registerNativeLibrary("jemalloc-lwjgl3", Platform.MacOSX32, "native/macosx/libjemalloc.dylib");
-        registerNativeLibrary("jemalloc-lwjgl3", Platform.MacOSX64, "native/macosx/libjemalloc.dylib");
+        // LWJGL 2
+        registerNativeLibrary("lwjgl", Platform.Windows32, "lwjgl.dll");
+        registerNativeLibrary("lwjgl", Platform.Windows64, "lwjgl64.dll");
+        registerNativeLibrary("lwjgl", Platform.Linux32,   "liblwjgl.so");
+        registerNativeLibrary("lwjgl", Platform.Linux64,   "liblwjgl64.so");
+        registerNativeLibrary("lwjgl", Platform.MacOSX32,  "liblwjgl.dylib");
+        registerNativeLibrary("lwjgl", Platform.MacOSX64,  "liblwjgl.dylib");
 
-        // OpenAL for LWJGL 3.x
+        // OpenAL for LWJGL 2
         // For OSX: Need to add lib prefix when extracting
-        registerNativeLibrary("openal-lwjgl3", Platform.Windows32, "native/windows/OpenAL32.dll");
-        registerNativeLibrary("openal-lwjgl3", Platform.Windows64, "native/windows/OpenAL.dll");
-        registerNativeLibrary("openal-lwjgl3", Platform.Linux32, "native/linux/libopenal32.so");
-        registerNativeLibrary("openal-lwjgl3", Platform.Linux64, "native/linux/libopenal.so");
-        registerNativeLibrary("openal-lwjgl3", Platform.MacOSX32, "native/macosx/openal.dylib", "libopenal.dylib");
-        registerNativeLibrary("openal-lwjgl3", Platform.MacOSX64, "native/macosx/openal.dylib", "libopenal.dylib");
+        registerNativeLibrary("openal", Platform.Windows32, "OpenAL32.dll");
+        registerNativeLibrary("openal", Platform.Windows64, "OpenAL64.dll");
+        registerNativeLibrary("openal", Platform.Linux32,   "libopenal.so");
+        registerNativeLibrary("openal", Platform.Linux64,   "libopenal64.so");
+        registerNativeLibrary("openal", Platform.MacOSX32,  "openal.dylib", "libopenal.dylib");
+        registerNativeLibrary("openal", Platform.MacOSX64,  "openal.dylib", "libopenal.dylib");
 
         // BulletJme
         registerNativeLibrary("bulletjme", Platform.Windows32, "native/windows/x86/bulletjme.dll");
@@ -184,16 +154,16 @@ public final class NativeLibraryLoader {
 
         // JInput
         // For OSX: Need to rename extension jnilib -> dylib when extracting
-        registerNativeLibrary("jinput", Platform.Windows32, "native/windows/jinput-raw.dll");
-        registerNativeLibrary("jinput", Platform.Windows64, "native/windows/jinput-raw_64.dll");
-        registerNativeLibrary("jinput", Platform.Linux32,   "native/windows/libjinput-linux.so");
-        registerNativeLibrary("jinput", Platform.Linux64,   "native/windows/libjinput-linux64.so");
-        registerNativeLibrary("jinput", Platform.MacOSX32,  "native/macosx/libjinput-osx.jnilib", "libjinput-osx.dylib");
-        registerNativeLibrary("jinput", Platform.MacOSX64,  "native/macosx/libjinput-osx.jnilib", "libjinput-osx.dylib");
+        registerNativeLibrary("jinput", Platform.Windows32, "jinput-raw.dll");
+        registerNativeLibrary("jinput", Platform.Windows64, "jinput-raw_64.dll");
+        registerNativeLibrary("jinput", Platform.Linux32,   "libjinput-linux.so");
+        registerNativeLibrary("jinput", Platform.Linux64,   "libjinput-linux64.so");
+        registerNativeLibrary("jinput", Platform.MacOSX32,  "libjinput-osx.jnilib", "libjinput-osx.dylib");
+        registerNativeLibrary("jinput", Platform.MacOSX64,  "libjinput-osx.jnilib", "libjinput-osx.dylib");
         
         // JInput Auxiliary (only required on Windows)
-        registerNativeLibrary("jinput-dx8", Platform.Windows32, "native/windows/jinput-dx8.dll");
-        registerNativeLibrary("jinput-dx8", Platform.Windows64, "native/windows/jinput-dx8_64.dll");
+        registerNativeLibrary("jinput-dx8", Platform.Windows32, "jinput-dx8.dll");
+        registerNativeLibrary("jinput-dx8", Platform.Windows64, "jinput-dx8_64.dll");
         registerNativeLibrary("jinput-dx8", Platform.Linux32,   null);
         registerNativeLibrary("jinput-dx8", Platform.Linux64,   null);
         registerNativeLibrary("jinput-dx8", Platform.MacOSX32,  null);
@@ -294,19 +264,14 @@ public final class NativeLibraryLoader {
         File userHomeFolder = new File(System.getProperty("user.home"));
         File userCacheFolder = null;
         
-        switch (JmeSystem.getPlatform()) {
-            case Linux32:
-            case Linux64:
+        switch (JmeSystem.getPlatform().getOs()) {
+            case Linux:
                 userCacheFolder = new File(userHomeFolder, ".cache");
                 break;
-            case MacOSX32:
-            case MacOSX64:
-            case MacOSX_PPC32:
-            case MacOSX_PPC64:
+            case MacOS:
                 userCacheFolder = new File(new File(userHomeFolder, "Library"), "Caches");
                 break;
-            case Windows32:
-            case Windows64:
+            case Windows:
                 userCacheFolder = new File(new File(userHomeFolder, "AppData"), "Local");
                 break;
         }

+ 0 - 8
jme3-vr/src/main/java/com/jme3/system/lwjgl/LwjglContextVR.java

@@ -119,17 +119,9 @@ public abstract class LwjglContextVR implements JmeContext {
             return;
         }
 
-        if ("LWJGL".equals(settings.getAudioRenderer())) {
-            NativeLibraryLoader.loadNativeLibrary("openal-lwjgl3", true);
-        }
-
         if (NativeLibraryLoader.isUsingNativeBullet()) {
             NativeLibraryLoader.loadNativeLibrary("bulletjme", true);
         }
-
-        NativeLibraryLoader.loadNativeLibrary("glfw-lwjgl3", true);
-        NativeLibraryLoader.loadNativeLibrary("jemalloc-lwjgl3", true);
-        NativeLibraryLoader.loadNativeLibrary("lwjgl3", true);
     }
 
     /**