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..a0f039c9e3 100644
--- a/jme3-core/src/main/java/com/jme3/system/JmeSystemDelegate.java
+++ b/jme3-core/src/main/java/com/jme3/system/JmeSystemDelegate.java
@@ -215,9 +215,9 @@ public boolean showSettingsDialog(AppSettings settings, boolean loadFromRegistry
}
- private boolean is64Bit(String arch) {
- if (arch.equals("x86")) {
- return false;
+ private boolean is64Bit(String arch) {
+ if (arch.equals("x86")) {
+ return false;
} else if (arch.equals("amd64")) {
return true;
} else if (arch.equals("x86_64")) {
@@ -240,37 +240,82 @@ private boolean is64Bit(String arch) {
return false;
} else {
throw new UnsupportedOperationException("Unsupported architecture: " + arch);
- }
- }
-
- public Platform getPlatform() {
- String os = System.getProperty("os.name").toLowerCase();
- 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;
- }
- } 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;
- }
- } 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;
- }
- } else {
- throw new UnsupportedOperationException("The specified platform: " + os + " is not supported.");
- }
+ }
+ }
+
+ 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 (isArmArchitecture(arch)) {
+ if (!is64) {
+ throw unsupported32Bit("Windows");
+ }
+ return Platform.Windows_ARM64;
+ }
+ if (isX86Architecture(arch)) {
+ if (!is64) {
+ throw unsupported32Bit("Windows");
+ }
+ return Platform.Windows64;
+ }
+ throw new UnsupportedOperationException("Unsupported architecture: " + arch);
+ }
+
+ private Platform getLinuxPlatform(String arch, boolean is64) {
+ if (isArmArchitecture(arch)) {
+ return is64 ? Platform.Linux_ARM64 : Platform.Linux_ARM32;
+ }
+ if (isX86Architecture(arch)) {
+ if (!is64) {
+ throw unsupported32Bit("Linux");
+ }
+ return Platform.Linux64;
+ }
+ throw new UnsupportedOperationException("Unsupported architecture: " + arch);
+ }
+
+ private Platform getMacPlatform(String arch, boolean is64) {
+ if (arch.startsWith("aarch")) {
+ return Platform.MacOSX_ARM64; // no 32-bit version
+ }
+ if (isX86Architecture(arch)) {
+ if (!is64) {
+ throw unsupported32Bit("macOS");
+ }
+ return Platform.MacOSX64;
+ }
+ throw new UnsupportedOperationException("Unsupported architecture: " + arch);
+ }
+
+ public Platform getPlatform() {
+ String os = System.getProperty("os.name").toLowerCase();
+ String arch = System.getProperty("os.arch").toLowerCase();
+ boolean is64 = is64Bit(arch);
+ if (os.contains("windows")) {
+ return getWindowsPlatform(arch, is64);
+ } else if (os.contains("linux") || os.contains("freebsd")
+ || os.contains("sunos") || os.contains("unix")) {
+ return getLinuxPlatform(arch, is64);
+ } else if (os.contains("mac os x") || os.contains("darwin")) {
+ return getMacPlatform(arch, is64);
+ } else {
+ throw new UnsupportedOperationException("The specified platform: " + os + " is not supported.");
+ }
}
public String getBuildInfo() {
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..18d2b77528 100644
--- a/jme3-core/src/main/java/com/jme3/system/Platform.java
+++ b/jme3-core/src/main/java/com/jme3/system/Platform.java
@@ -36,54 +36,34 @@
*/
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
- */
+ /**
+ * Microsoft Windows 64-bit AMD/Intel
+ */
+ Windows64(Os.Windows, true),
+
+ /**
+ * Microsoft Windows 64-bit ARM
+ */
+ Windows_ARM64(Os.Windows, true),
+
+ /**
+ * 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 64-bit Intel
+ */
MacOSX64(Os.MacOS, true),
/**
@@ -91,19 +71,9 @@ public enum Platform {
*/
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
+ */
Android_ARM5(Os.Android),
/**
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..90c9060338 100644
--- a/jme3-desktop/src/main/java/com/jme3/system/ExtractNativeLibraries.java
+++ b/jme3-desktop/src/main/java/com/jme3/system/ExtractNativeLibraries.java
@@ -60,7 +60,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 either Windows64, Linux64, or MacOSX64");
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,20 +68,14 @@ 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])) {
+ 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.err.println("Please specify a platform, Windows64, Linux64, or MacOSX64");
System.exit(3);
}
} catch (IOException 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..e21366c821 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,11 @@ 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 +91,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 +101,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");
+ *
*
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..d1e047779a 100644
--- a/jme3-lwjgl3/build.gradle
+++ b/jme3-lwjgl3/build.gradle
@@ -15,7 +15,6 @@ 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') })
@@ -23,7 +22,6 @@ dependencies {
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') })
@@ -31,7 +29,6 @@ dependencies {
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') })
@@ -39,7 +36,6 @@ dependencies {
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') })
@@ -47,7 +43,6 @@ dependencies {
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') })
@@ -55,7 +50,6 @@ dependencies {
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') })
@@ -69,4 +63,3 @@ javadoc {
options.addStringOption('Xdoclint:none', '-quiet')
}
}
-