Add support for manually compiled LWJGL instance

This commit is contained in:
AtomicScience 2025-02-17 09:20:05 +03:00
parent 1a69b55f5e
commit b67cd2a7f2
2 changed files with 21 additions and 5 deletions

View File

@ -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"

View File

@ -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)