diff --git a/gradle.properties b/gradle.properties index d924be823d..01cfcd81a7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -19,7 +19,6 @@ buildJavaDoc = true buildNativeProjects = false buildAndroidExamples = false -buildForPlatforms = Linux64,Linux32,Windows64,Windows32,Mac64 # Forcefully ignore prebuilt libraries skipPrebuildLibraries=false diff --git a/jme3-android-native/openalsoft.gradle b/jme3-android-native/openalsoft.gradle index 0a14d4b429..2b91a3a038 100644 --- a/jme3-android-native/openalsoft.gradle +++ b/jme3-android-native/openalsoft.gradle @@ -86,12 +86,10 @@ def ndkPath = new File(rootProject.ndkCommandPath).getParent() def cmakeToolchain = "${ndkPath}/build/cmake/android.toolchain.cmake" // 1) list your ABIs here -def openalAbis = [ - "armeabi-v7a", - "arm64-v8a", - "x86", - "x86_64" -] +def openalAbis = [ + "arm64-v8a", + "x86_64" +] // 2) for each ABI, register a configure/build pair openalAbis.each { abi -> @@ -170,7 +168,7 @@ task buildOpenAlSoftNativeLib(type: Exec) { // the cmake-build- folders. args( // let ndk-build know which ABIs to build for - "APP_ABI=armeabi-v7a,arm64-v8a,x86,x86_64", + "APP_ABI=arm64-v8a,x86_64", // pass in the path to the CMake output root "OPENALSOFT_BUILD_ROOT=${openalsoftBuildDir}/${openALSoftFolder}", diff --git a/jme3-android-native/src/native/jme_bufferallocator/Application.mk b/jme3-android-native/src/native/jme_bufferallocator/Application.mk index de0aea4497..6b07cf2873 100644 --- a/jme3-android-native/src/native/jme_bufferallocator/Application.mk +++ b/jme3-android-native/src/native/jme_bufferallocator/Application.mk @@ -33,9 +33,8 @@ # Created by pavl_g on 5/17/22. # For more : https://developer.android.com/ndk/guides/application_mk. ## -APP_PLATFORM := android-19 +APP_PLATFORM := android-21 # change this to 'debug' to see android logs APP_OPTIM := release -APP_ABI := armeabi-v7a,arm64-v8a,x86,x86_64 +APP_ABI := arm64-v8a,x86_64 APP_SUPPORT_FLEXIBLE_PAGE_SIZES := true - diff --git a/jme3-android-native/src/native/jme_decode/Application.mk b/jme3-android-native/src/native/jme_decode/Application.mk index 9651f8ee88..7ba509726f 100644 --- a/jme3-android-native/src/native/jme_decode/Application.mk +++ b/jme3-android-native/src/native/jme_decode/Application.mk @@ -1,5 +1,4 @@ -APP_PLATFORM := android-9 +APP_PLATFORM := android-21 APP_OPTIM := release -APP_ABI := armeabi-v7a,arm64-v8a,x86,x86_64 +APP_ABI := arm64-v8a,x86_64 APP_SUPPORT_FLEXIBLE_PAGE_SIZES := true - diff --git a/jme3-android-native/src/native/jme_openalsoft/Application.mk b/jme3-android-native/src/native/jme_openalsoft/Application.mk index 58561d1d14..32f4c893fd 100644 --- a/jme3-android-native/src/native/jme_openalsoft/Application.mk +++ b/jme3-android-native/src/native/jme_openalsoft/Application.mk @@ -1,6 +1,5 @@ -APP_PLATFORM := android-19 +APP_PLATFORM := android-21 APP_OPTIM := release -APP_ABI := armeabi-v7a,arm64-v8a,x86,x86_64 +APP_ABI := arm64-v8a,x86_64 APP_STL := c++_static APP_SUPPORT_FLEXIBLE_PAGE_SIZES := true - diff --git a/jme3-android/src/main/java/com/jme3/system/android/JmeAndroidSystem.java b/jme3-android/src/main/java/com/jme3/system/android/JmeAndroidSystem.java index 226f7ff6dd..0ba2d85e0c 100644 --- a/jme3-android/src/main/java/com/jme3/system/android/JmeAndroidSystem.java +++ b/jme3-android/src/main/java/com/jme3/system/android/JmeAndroidSystem.java @@ -3,6 +3,7 @@ import android.app.AlertDialog; import android.content.Context; import android.graphics.Bitmap; +import android.os.Build; import android.os.Environment; import android.view.View; import android.view.inputmethod.InputMethodManager; @@ -24,6 +25,8 @@ import java.io.OutputStream; import java.net.URL; import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.Locale; import java.util.logging.Level; public class JmeAndroidSystem extends JmeSystemDelegate { @@ -115,24 +118,28 @@ public void initialize(AppSettings settings) { @Override public Platform getPlatform() { - String arch = System.getProperty("os.arch").toLowerCase(); - if (arch.contains("arm")) { - if (arch.contains("v5")) { - return Platform.Android_ARM5; - } else if (arch.contains("v6")) { - return Platform.Android_ARM6; - } else if (arch.contains("v7")) { - return Platform.Android_ARM7; - } else if (arch.contains("v8")) { + String arch = System.getProperty("os.arch", "").toLowerCase(Locale.ROOT); + switch (arch) { + case "aarch64": + case "arm64": return Platform.Android_ARM8; - } else { - return Platform.Android_ARM5; // unknown ARM - } - } else if (arch.contains("aarch")) { - return Platform.Android_ARM8; - } else { - return Platform.Android_Other; + case "x86_64": + case "amd64": + return Platform.Android_X86_64; + case "arm": + case "armv7l": + case "x86": + case "i386": + case "i686": + throw new UnsupportedOperationException("Unsupported 32-bit Android architecture: " + arch); + default: + if (arch.startsWith("arm") || arch.contains("armeabi")) { + throw new UnsupportedOperationException("Unsupported 32-bit Android architecture: " + arch); + } + throw new UnsupportedOperationException("Unsupported Android architecture: " + arch + + ", supported ABIs: " + (Build.VERSION.SDK_INT >= 21 ? Arrays.toString(Build.SUPPORTED_ABIS) : "unknown")); } + } @Override diff --git a/jme3-core/src/main/java/com/jme3/system/JmeSystemDelegate.java b/jme3-core/src/main/java/com/jme3/system/JmeSystemDelegate.java index c9d8b79182..f95745011a 100644 --- a/jme3-core/src/main/java/com/jme3/system/JmeSystemDelegate.java +++ b/jme3-core/src/main/java/com/jme3/system/JmeSystemDelegate.java @@ -215,32 +215,73 @@ public boolean showSettingsDialog(AppSettings settings, boolean loadFromRegistry } - private boolean is64Bit(String arch) { - if (arch.equals("x86")) { - return false; - } else if (arch.equals("amd64")) { - return true; - } else if (arch.equals("x86_64")) { - return true; - } else if (arch.equals("ppc") || arch.equals("PowerPC")) { - return false; - } else if (arch.equals("ppc64")) { - return true; - } else if (arch.equals("i386") || arch.equals("i686")) { - return false; - } else if (arch.equals("universal")) { - return false; - } else if (arch.equals("aarch32")) { - return false; - } else if (arch.equals("aarch64")) { - return true; - } else if (arch.equals("armv7") || arch.equals("armv7l")) { - return false; - } else if (arch.equals("arm")) { - return false; - } else { - throw new UnsupportedOperationException("Unsupported architecture: " + arch); + private boolean is64Bit(String arch) { + switch (arch) { + case "amd64": + case "x86_64": + case "aarch64": + case "arm64": + case "ppc64": + case "universal": + return true; + case "x86": + case "i386": + case "i686": + case "aarch32": + case "arm": + case "armv7": + case "armv7l": + return false; + default: + throw new UnsupportedOperationException("Unsupported architecture: " + arch); + } + } + + private boolean isArmArchitecture(String arch) { + return arch.startsWith("arm") || arch.startsWith("aarch"); + } + + private boolean isX86Architecture(String arch) { + return arch.equals("x86") + || arch.equals("amd64") + || arch.equals("x86_64") + || arch.equals("i386") + || arch.equals("i686") + || arch.equals("universal"); + } + + private UnsupportedOperationException unsupported32Bit(String osName) { + return new UnsupportedOperationException("32-bit " + osName + " is not supported."); + } + + private Platform getWindowsPlatform(String arch, boolean is64) { + if (!is64) { + // no 32-bit version + throw unsupported32Bit("Windows"); } + if (isArmArchitecture(arch)) return Platform.Windows_ARM64; + if (isX86Architecture(arch)) return Platform.Windows64; + throw new UnsupportedOperationException("Unsupported architecture: " + arch); + } + + private Platform getLinuxPlatform(String arch, boolean is64) { + if (!is64) { + // no 32-bit version + throw unsupported32Bit("Linux"); + } + if (isArmArchitecture(arch)) return Platform.Linux_ARM64; + if (isX86Architecture(arch)) return Platform.Linux64; + throw new UnsupportedOperationException("Unsupported architecture: " + arch); + } + + private Platform getMacPlatform(String arch, boolean is64) { + if (!is64) { + // no 32-bit version + throw unsupported32Bit("macOS"); + } + if (isArmArchitecture(arch)) return Platform.MacOSX_ARM64; + if (isX86Architecture(arch)) return Platform.MacOSX64; + throw new UnsupportedOperationException("Unsupported architecture: " + arch); } public Platform getPlatform() { @@ -248,26 +289,12 @@ public Platform getPlatform() { String arch = System.getProperty("os.arch").toLowerCase(); boolean is64 = is64Bit(arch); if (os.contains("windows")) { - if (arch.startsWith("arm") || arch.startsWith("aarch")) { - return is64 ? Platform.Windows_ARM64 : Platform.Windows_ARM32; - } else { - return is64 ? Platform.Windows64 : Platform.Windows32; - } + return getWindowsPlatform(arch, is64); } else if (os.contains("linux") || os.contains("freebsd") || os.contains("sunos") || os.contains("unix")) { - if (arch.startsWith("arm") || arch.startsWith("aarch")) { - return is64 ? Platform.Linux_ARM64 : Platform.Linux_ARM32; - } else { - return is64 ? Platform.Linux64 : Platform.Linux32; - } + return getLinuxPlatform(arch, is64); } else if (os.contains("mac os x") || os.contains("darwin")) { - if (arch.startsWith("ppc")) { - return is64 ? Platform.MacOSX_PPC64 : Platform.MacOSX_PPC32; - } else if (arch.startsWith("aarch")) { - return Platform.MacOSX_ARM64; // no 32-bit version - } else { - return is64 ? Platform.MacOSX64 : Platform.MacOSX32; - } + return getMacPlatform(arch, is64); } else { throw new UnsupportedOperationException("The specified platform: " + os + " is not supported."); } diff --git a/jme3-core/src/main/java/com/jme3/system/Platform.java b/jme3-core/src/main/java/com/jme3/system/Platform.java index 64595a9106..2ccd763c8f 100644 --- a/jme3-core/src/main/java/com/jme3/system/Platform.java +++ b/jme3-core/src/main/java/com/jme3/system/Platform.java @@ -36,51 +36,26 @@ */ public enum Platform { - /** - * Microsoft Windows 32-bit AMD/Intel - */ - Windows32(Os.Windows), - /** * Microsoft Windows 64-bit AMD/Intel */ Windows64(Os.Windows, true), - /** - * Microsoft Windows 32-bit ARM - */ - Windows_ARM32(Os.Windows), - /** * Microsoft Windows 64-bit ARM */ Windows_ARM64(Os.Windows, true), - /** - * Linux 32-bit Intel - */ - Linux32(Os.Linux), - /** * Linux 64-bit Intel */ Linux64(Os.Linux, true), - /** - * Linux 32-bit ARM - */ - Linux_ARM32(Os.Linux), - /** * Linux 64-bit ARM */ Linux_ARM64(Os.Linux, true), - /** - * Apple Mac OS X 32-bit Intel - */ - MacOSX32(Os.MacOS), - /** * Apple Mac OS X 64-bit Intel */ @@ -90,57 +65,26 @@ public enum Platform { * Apple Mac OS X 64-bit ARM */ MacOSX_ARM64(Os.MacOS, true), - - /** - * Apple Mac OS X 32 bit PowerPC - */ - MacOSX_PPC32(Os.MacOS), - - /** - * Apple Mac OS X 64 bit PowerPC - */ - MacOSX_PPC64(Os.MacOS, true), - - /** - * Android ARM5 - */ - Android_ARM5(Os.Android), - - /** - * Android ARM6 - */ - Android_ARM6(Os.Android), - - /** - * Android ARM7 - */ - Android_ARM7(Os.Android), - + /** * Android ARM8 */ - Android_ARM8(Os.Android), - - /** - * Android x86 - */ - Android_X86(Os.Android), - - /** - * iOS on x86 - */ - iOS_X86(Os.iOS), + Android_ARM8(Os.Android, true), /** - * iOS on ARM + * Android x86_64 */ - iOS_ARM(Os.iOS), + Android_X86_64(Os.Android, true), - /** - * Android running on unknown platform (could be x86 or mips for example). - */ - Android_Other(Os.Android), - + /** + * iOS on ARM + */ + iOS_ARM(Os.iOS, true), + + /** + * iOS on x86_64 (simulator) + */ + iOS_X86(Os.iOS, true), /** * Generic web platform on unknown architecture */ diff --git a/jme3-desktop/src/main/java/com/jme3/system/ExtractNativeLibraries.java b/jme3-desktop/src/main/java/com/jme3/system/ExtractNativeLibraries.java index fa63dedb1e..ccd64a07f6 100644 --- a/jme3-desktop/src/main/java/com/jme3/system/ExtractNativeLibraries.java +++ b/jme3-desktop/src/main/java/com/jme3/system/ExtractNativeLibraries.java @@ -33,6 +33,7 @@ import java.io.File; import java.io.IOException; +import java.util.Arrays; import java.util.logging.Level; import java.util.logging.Logger; @@ -60,7 +61,7 @@ public static void main(String[] args) { } if (args.length < 2) { System.err.println("Usage: ExtractNativeLibraries Platform ExtractionPath"); - System.err.println("Where 'Platform' is either Windows32, Windows64, Linux32, Linux64, MacOSX32 or MacOSX64"); + System.err.println("Where 'Platform' is one of: " + Arrays.toString(Platform.values())); System.err.println("'ExtractionPath' is a folder to extract the binaries to."); System.err.println("You can also use ExtractNativeLibraries getjarexcludes to get a list of excludes for the jar files that contain binaries."); System.exit(1); @@ -68,22 +69,12 @@ public static void main(String[] args) { String path = args[1].replace('/', File.separatorChar); File folder = new File(path); try { - if ("Windows32".equals(args[0])) { - NativeLibraryLoader.extractNativeLibraries(Platform.Windows32, folder); - } else if ("Windows64".equals(args[0])) { - NativeLibraryLoader.extractNativeLibraries(Platform.Windows64, folder); - } else if ("Linux32".equals(args[0])) { - NativeLibraryLoader.extractNativeLibraries(Platform.Linux32, folder); - } else if ("Linux64".equals(args[0])) { - NativeLibraryLoader.extractNativeLibraries(Platform.Linux64, folder); - } else if ("MacOSX32".equals(args[0])) { - NativeLibraryLoader.extractNativeLibraries(Platform.MacOSX32, folder); - } else if ("MacOSX64".equals(args[0])) { - NativeLibraryLoader.extractNativeLibraries(Platform.MacOSX64, folder); - } else { - System.err.println("Please specify a platform, Windows32, Windows64, Linux32, Linux64, MacOSX32 or MacOSX64"); - System.exit(3); - } + Platform platform = Platform.valueOf(args[0]); + NativeLibraryLoader.extractNativeLibraries(platform, folder); + } catch (IllegalArgumentException ex) { + System.err.println("Unknown platform: " + args[0]); + System.err.println("Supported platforms: " + Arrays.toString(Platform.values())); + System.exit(3); } catch (IOException ex) { Logger.getLogger(ExtractNativeLibraries.class.getName()).log(Level.SEVERE, null, ex); } diff --git a/jme3-desktop/src/main/java/com/jme3/system/NativeLibraries.java b/jme3-desktop/src/main/java/com/jme3/system/NativeLibraries.java index b64a2fa84b..477e0b57da 100644 --- a/jme3-desktop/src/main/java/com/jme3/system/NativeLibraries.java +++ b/jme3-desktop/src/main/java/com/jme3/system/NativeLibraries.java @@ -54,11 +54,8 @@ public enum NativeLibraries { // Delegate loading to lwjgl. System.setProperty("org.lwjgl.librarypath", Paths.get(libPath).getParent().toAbsolutePath().toString())) - .addNativeVariant(Platform.Windows32, "lwjgl.dll") .addNativeVariant(Platform.Windows64, "lwjgl64.dll") - .addNativeVariant(Platform.Linux32, "liblwjgl.so") .addNativeVariant(Platform.Linux64, "liblwjgl64.so") - .addNativeVariant(Platform.MacOSX32, "liblwjgl.dylib") .addNativeVariant(Platform.MacOSX64, "liblwjgl.dylib") ), @@ -68,11 +65,8 @@ public enum NativeLibraries { * Native OpenAL audio libraries for LWJGL 2 required by jme3-lwjgl backend. */ OpenAL(new LibraryInfo("openal") - .addNativeVariant(Platform.Windows32, "OpenAL32.dll") .addNativeVariant(Platform.Windows64, "OpenAL64.dll") - .addNativeVariant(Platform.Linux32, "libopenal.so") .addNativeVariant(Platform.Linux64, "libopenal64.so") - .addNativeVariant(Platform.MacOSX32, "openal.dylib", "libopenal.dylib") .addNativeVariant(Platform.MacOSX64, "openal.dylib", "libopenal.dylib") ), @@ -80,14 +74,10 @@ public enum NativeLibraries { * Native bullet physics libraries required by Minie library. */ BulletJme(new LibraryInfo("bulletjme") - .addNativeVariant(Platform.Windows32, "native/windows/x86/bulletjme.dll", "bulletjme-x86.dll") .addNativeVariant(Platform.Windows64, "native/windows/x86_64/bulletjme.dll", "bulletjme-x86_64.dll") .addNativeVariant(Platform.Windows_ARM64, "native/windows/arm64/bulletjme.dll", "bulletjme-arm64.dll") - .addNativeVariant(Platform.Linux32, "native/linux/x86/libbulletjme.so", "libbulletjme-x86.so") .addNativeVariant(Platform.Linux64, "native/linux/x86_64/libbulletjme.so", "libbulletjme-x86_64.so") - .addNativeVariant(Platform.Linux_ARM32, "native/linux/arm32/libbulletjme.so", "libbulletjme-arm32.so") .addNativeVariant(Platform.Linux_ARM64, "native/linux/arm64/libbulletjme.so", "libbulletjme-arm64.so") - .addNativeVariant(Platform.MacOSX32, "native/osx/x86/libbulletjme.dylib", "libbulletjme-x86.dylib") .addNativeVariant(Platform.MacOSX64, "native/osx/x86_64/libbulletjme.dylib", "libbulletjme-x86_64.dylib") .addNativeVariant(Platform.MacOSX_ARM64, "native/osx/arm64/libbulletjme.dylib", "libbulletjme-arm64.dylib") ), @@ -100,11 +90,8 @@ public enum NativeLibraries { // Delegate loading to jinput. System.setProperty("net.java.games.input.librarypath", Paths.get(libPath).getParent().toAbsolutePath().toString())) - .addNativeVariant(Platform.Windows32, "jinput-raw.dll") .addNativeVariant(Platform.Windows64, "jinput-raw_64.dll") - .addNativeVariant(Platform.Linux32, "libjinput-linux.so") .addNativeVariant(Platform.Linux64, "libjinput-linux64.so") - .addNativeVariant(Platform.MacOSX32, "libjinput-osx.jnilib", "libjinput-osx.dylib") .addNativeVariant(Platform.MacOSX64, "libjinput-osx.jnilib", "libjinput-osx.dylib") ), @@ -113,11 +100,8 @@ public enum NativeLibraries { * (only required on Windows) */ JInputDX8(new LibraryInfo("jinput-dx8") - .addNativeVariant(Platform.Windows32, "jinput-dx8.dll", null) .addNativeVariant(Platform.Windows64, "jinput-dx8_64.dll", null) - .addNativeVariant(Platform.Linux32, null) .addNativeVariant(Platform.Linux64, null) - .addNativeVariant(Platform.MacOSX32, null) .addNativeVariant(Platform.MacOSX64, null) ); diff --git a/jme3-desktop/src/main/java/com/jme3/system/NativeLibraryLoader.java b/jme3-desktop/src/main/java/com/jme3/system/NativeLibraryLoader.java index 0ec507fb7a..e6be5861a6 100644 --- a/jme3-desktop/src/main/java/com/jme3/system/NativeLibraryLoader.java +++ b/jme3-desktop/src/main/java/com/jme3/system/NativeLibraryLoader.java @@ -54,15 +54,12 @@ * You can then extract this library (depending on platform), by * using {@link #loadNativeLibrary(java.lang.String, boolean) }. *
- * Example:
- *
- * NativeLibraryLoader.registerNativeLibrary("mystuff", Platform.Windows32, "native/windows/mystuff.dll");
- * NativeLibraryLoader.registerNativeLibrary("mystuff", Platform.Windows64, "native/windows/mystuff64.dll");
- * NativeLibraryLoader.registerNativeLibrary("mystuff", Platform.Linux32,   "native/linux/libmystuff.so");
- * NativeLibraryLoader.registerNativeLibrary("mystuff", Platform.Linux64,   "native/linux/libmystuff64.so");
- * NativeLibraryLoader.registerNativeLibrary("mystuff", Platform.MacOSX32,  "native/macosx/libmystuff.jnilib");
- * NativeLibraryLoader.registerNativeLibrary("mystuff", Platform.MacOSX64,  "native/macosx/libmystuff.jnilib");
- * 
+ * Example:
+ *
+ * NativeLibraryLoader.registerNativeLibrary("mystuff", Platform.Windows64, "native/windows/mystuff64.dll");
+ * NativeLibraryLoader.registerNativeLibrary("mystuff", Platform.Linux64,   "native/linux/libmystuff64.so");
+ * NativeLibraryLoader.registerNativeLibrary("mystuff", Platform.MacOSX64,  "native/macosx/libmystuff.jnilib");
+ * 
*
* This will register the library. Load it via:
*
diff --git a/jme3-ios/src/main/java/com/jme3/system/ios/JmeIosSystem.java b/jme3-ios/src/main/java/com/jme3/system/ios/JmeIosSystem.java
index 4f99bbe476..0ccbc56c59 100644
--- a/jme3-ios/src/main/java/com/jme3/system/ios/JmeIosSystem.java
+++ b/jme3-ios/src/main/java/com/jme3/system/ios/JmeIosSystem.java
@@ -112,12 +112,12 @@ public void initialize(AppSettings settings) {
     @Override
     public Platform getPlatform() {
         String arch = System.getProperty("os.arch").toLowerCase();
-        if (arch.contains("arm")) {
+        if (arch.contains("arm") || arch.contains("aarch")) {
             return Platform.iOS_ARM;
-        } else if (arch.contains("aarch")) {
-            return Platform.iOS_ARM;
-        } else {
+        } else if (arch.contains("x86_64") || arch.contains("amd64")) {
             return Platform.iOS_X86;
+        } else {
+            throw new UnsupportedOperationException("Unsupported iOS architecture: " + arch);
         }
     }
 
@@ -125,4 +125,4 @@ public Platform getPlatform() {
     public void showSoftKeyboard(boolean show) {
         throw new UnsupportedOperationException("Not supported yet.");
     }
-}
\ No newline at end of file
+}
diff --git a/jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglCanvas.java b/jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglCanvas.java
index 5fa76754b2..b7da29d7cd 100644
--- a/jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglCanvas.java
+++ b/jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglCanvas.java
@@ -406,10 +406,7 @@ protected void destroyContext() {
                 // freezes the application.
                 // On Mac it freezes the application.
                 // On Linux it fixes a crash with X Window System.
-                if (
-                    JmeSystem.getPlatform() == Platform.Windows32 ||
-                    JmeSystem.getPlatform() == Platform.Windows64
-                ) {
+                if (JmeSystem.getPlatform() == Platform.Windows64) {
                     // Display.setParent(null);
                 }
                 // } catch (LWJGLException ex) {
diff --git a/jme3-lwjgl3/build.gradle b/jme3-lwjgl3/build.gradle
index e360ab7054..98199a5117 100644
--- a/jme3-lwjgl3/build.gradle
+++ b/jme3-lwjgl3/build.gradle
@@ -15,49 +15,37 @@ dependencies {
     api libs.lwjgl3.sdl
 
     runtimeOnly(variantOf(libs.lwjgl3.base){ classifier('natives-windows') })
-    runtimeOnly(variantOf(libs.lwjgl3.base){ classifier('natives-windows-x86') })
     runtimeOnly(variantOf(libs.lwjgl3.base){ classifier('natives-linux') })
-    runtimeOnly(variantOf(libs.lwjgl3.base){ classifier('natives-linux-arm32') })
     runtimeOnly(variantOf(libs.lwjgl3.base){ classifier('natives-linux-arm64') })
     runtimeOnly(variantOf(libs.lwjgl3.base){ classifier('natives-macos') })
     runtimeOnly(variantOf(libs.lwjgl3.base){ classifier('natives-macos-arm64') })
 
     runtimeOnly(variantOf(libs.lwjgl3.glfw){ classifier('natives-windows') })
-    runtimeOnly(variantOf(libs.lwjgl3.glfw){ classifier('natives-windows-x86') })
     runtimeOnly(variantOf(libs.lwjgl3.glfw){ classifier('natives-linux') })
-    runtimeOnly(variantOf(libs.lwjgl3.glfw){ classifier('natives-linux-arm32') })
     runtimeOnly(variantOf(libs.lwjgl3.glfw){ classifier('natives-linux-arm64') })
     runtimeOnly(variantOf(libs.lwjgl3.glfw){ classifier('natives-macos') })
     runtimeOnly(variantOf(libs.lwjgl3.glfw){ classifier('natives-macos-arm64') })
 
     runtimeOnly(variantOf(libs.lwjgl3.jemalloc){ classifier('natives-windows') })
-    runtimeOnly(variantOf(libs.lwjgl3.jemalloc){ classifier('natives-windows-x86') })
     runtimeOnly(variantOf(libs.lwjgl3.jemalloc){ classifier('natives-linux') })
-    runtimeOnly(variantOf(libs.lwjgl3.jemalloc){ classifier('natives-linux-arm32') })
     runtimeOnly(variantOf(libs.lwjgl3.jemalloc){ classifier('natives-linux-arm64') })
     runtimeOnly(variantOf(libs.lwjgl3.jemalloc){ classifier('natives-macos') })
     runtimeOnly(variantOf(libs.lwjgl3.jemalloc){ classifier('natives-macos-arm64') })
 
     runtimeOnly(variantOf(libs.lwjgl3.opengl){ classifier('natives-windows') })
-    runtimeOnly(variantOf(libs.lwjgl3.opengl){ classifier('natives-windows-x86') })
     runtimeOnly(variantOf(libs.lwjgl3.opengl){ classifier('natives-linux') })
-    runtimeOnly(variantOf(libs.lwjgl3.opengl){ classifier('natives-linux-arm32') })
     runtimeOnly(variantOf(libs.lwjgl3.opengl){ classifier('natives-linux-arm64') })
     runtimeOnly(variantOf(libs.lwjgl3.opengl){ classifier('natives-macos') })
     runtimeOnly(variantOf(libs.lwjgl3.opengl){ classifier('natives-macos-arm64') })
 
     runtimeOnly(variantOf(libs.lwjgl3.openal){ classifier('natives-windows') })
-    runtimeOnly(variantOf(libs.lwjgl3.openal){ classifier('natives-windows-x86') })
     runtimeOnly(variantOf(libs.lwjgl3.openal){ classifier('natives-linux') })
-    runtimeOnly(variantOf(libs.lwjgl3.openal){ classifier('natives-linux-arm32') })
     runtimeOnly(variantOf(libs.lwjgl3.openal){ classifier('natives-linux-arm64') })
     runtimeOnly(variantOf(libs.lwjgl3.openal){ classifier('natives-macos') })
     runtimeOnly(variantOf(libs.lwjgl3.openal){ classifier('natives-macos-arm64') })
 
     runtimeOnly(variantOf(libs.lwjgl3.sdl){ classifier('natives-windows') })
-    runtimeOnly(variantOf(libs.lwjgl3.sdl){ classifier('natives-windows-x86') })
     runtimeOnly(variantOf(libs.lwjgl3.sdl){ classifier('natives-linux') })
-    runtimeOnly(variantOf(libs.lwjgl3.sdl){ classifier('natives-linux-arm32') })
     runtimeOnly(variantOf(libs.lwjgl3.sdl){ classifier('natives-linux-arm64') })
     runtimeOnly(variantOf(libs.lwjgl3.sdl){ classifier('natives-macos') })
     runtimeOnly(variantOf(libs.lwjgl3.sdl){ classifier('natives-macos-arm64') })
@@ -69,4 +57,3 @@ javadoc {
         options.addStringOption('Xdoclint:none', '-quiet')
     }
 }
-