diff --git a/build.sbt b/build.sbt index 2fe1f42..0776795 100644 --- a/build.sbt +++ b/build.sbt @@ -14,6 +14,15 @@ lazy val root = project.in(file(".")) ) ) +// Ensure Java 8 compatibility +javacOptions ++= Seq("-source", "1.8", "-target", "1.8") +initialize := { + val _ = initialize.value + val required = "1.8" + val current = sys.props("java.specification.version") + assert(current == required, s"Incompatible JDK: java.specification.version $current != $required") +} + lazy val brain = ProjectRef(file("lib/ocelot-brain"), "ocelot-brain") libraryDependencies += "org.scala-lang" % "scala-reflect" % scalaVersion.value @@ -28,9 +37,8 @@ libraryDependencies += "org.apache.logging.log4j" % "log4j-slf4j-impl" % "2.20.0 val lwjglVersion = "2.9.3" libraryDependencies += "org.lwjgl.lwjgl" % "lwjgl" % lwjglVersion -libraryDependencies += "org.lwjgl.lwjgl" % "lwjgl-platform" % lwjglVersion classifier "natives-linux" -libraryDependencies += "org.lwjgl.lwjgl" % "lwjgl-platform" % lwjglVersion classifier "natives-windows" -libraryDependencies += "org.lwjgl.lwjgl" % "lwjgl-platform" % lwjglVersion classifier "natives-osx" + +Compile / unmanagedResourceDirectories += baseDirectory.value / "lib" / "native" libraryDependencies += "com.github.stephengold" % "j-ogg-all" % "1.0.3" libraryDependencies += "com.github.wendykierp" % "JTransforms" % "3.1" diff --git a/src/main/scala/ocelot/desktop/ui/UiHandler.scala b/src/main/scala/ocelot/desktop/ui/UiHandler.scala index fea5aed..9f2e0a9 100644 --- a/src/main/scala/ocelot/desktop/ui/UiHandler.scala +++ b/src/main/scala/ocelot/desktop/ui/UiHandler.scala @@ -245,6 +245,7 @@ object UiHandler extends Logging { val arch = System.getProperty("os.arch") val is64bit = arch.startsWith("amd64") + val isArm64 = arch.equals("aarch64") || arch.startsWith("arm64") val libs = { if (SystemUtils.IS_OS_WINDOWS) { @@ -253,7 +254,11 @@ object UiHandler extends Logging { else Array("jinput-dx8.dll", "jinput-raw.dll", "jinput-wintab.dll", "lwjgl.dll", "OpenAL32.dll") } else if (SystemUtils.IS_OS_MAC_OSX) - Array("liblwjgl.dylib") + if (isArm64) { + Array("liblwjgl-arm64.dylib") + } else { + Array("liblwjgl.dylib") + } else if (SystemUtils.IS_OS_LINUX) { if (is64bit) Array("libjinput-linux64.so", "liblwjgl64.so", "libopenal64.so") @@ -266,7 +271,10 @@ object UiHandler extends Logging { logger.debug(s"Unpacking native libraries to: $librariesPath") for (lib <- libs) { - val dest = new File(Paths.get(librariesPath, lib).toString) + val destinationFilename = if (SystemUtils.IS_OS_MAC_OSX) "liblwjgl.dylib" else lib + val dest = new File(Paths.get(librariesPath, destinationFilename).toString) + + logger.debug(s"Unpacking $lib to $dest") if (!dest.exists()) { val source = getClass.getResourceAsStream("/" + lib)