Skip to content

Commit 58bf8b9

Browse files
committed
Fix more issues with library not loading
1 parent aa146ba commit 58bf8b9

File tree

1 file changed

+36
-32
lines changed

1 file changed

+36
-32
lines changed

library/src/main/kotlin/xyz/bluspring/unitytranslate/library/UnityTranslateLib.kt

Lines changed: 36 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,35 @@ class UnityTranslateLib(val path: Path) {
6262

6363
companion object {
6464
val logger: Logger = LoggerFactory.getLogger(UnityTranslateLib::class.java)
65+
private val platformLibs: List<String>
66+
get() {
67+
val osName = System.getProperty("os.name").lowercase()
68+
val osArch = System.getProperty("os.arch").lowercase()
69+
val isWindows = osName.contains("win")
70+
val isMac = osName.contains("mac")
71+
72+
val dir = "unitytranslate/${if (isWindows) "windows" else if (isMac) "osx" else "linux"}-${osArch}"
73+
74+
return if (osArch == "amd64") {
75+
if (isWindows)
76+
listOf(
77+
"$dir/UnityTranslateLib.dll",
78+
"$dir/ctranslate2.dll",
79+
"$dir/cudnn64_9.dll",
80+
"$dir/libiomp5md.dll"
81+
)
82+
else if (isMac)
83+
listOf()
84+
else
85+
listOf(
86+
"$dir/libUnityTranslateLib.so",
87+
"$dir/libctranslate2.so",
88+
"$dir/libcudnn.so",
89+
"$dir/libgomp.so"
90+
)
91+
} else emptyList()
92+
}
93+
private val cachedPlatformLibs = platformLibs
6594

6695
// Modified from ImGui-java's library loading - https://github.com/SpaiR/imgui-java/blob/main/imgui-binding/src/main/java/imgui/ImGui.java
6796
init {
@@ -86,8 +115,14 @@ class UnityTranslateLib(val path: Path) {
86115
throw joined
87116
}
88117

118+
val osName = System.getProperty("os.name").lowercase()
119+
val osArch = System.getProperty("os.arch").lowercase()
120+
val isWindows = osName.contains("win")
121+
val isMac = osName.contains("mac")
122+
val dir = "unitytranslate/${if (isWindows) "windows" else if (isMac) "osx" else "linux"}-${osArch}/"
123+
89124
for (lib in platformLibs.reversed()) {
90-
System.load(extractedPath.resolve(lib).absolutePathString())
125+
System.load(extractedPath.resolve(lib.removePrefix(dir)).absolutePathString())
91126
}
92127
}
93128
}
@@ -108,35 +143,6 @@ class UnityTranslateLib(val path: Path) {
108143
return System.getProperty("unitytranslate.library.name", "${libPrefix}UnityTranslateLib${libSuffix}")
109144
}
110145

111-
private val platformLibs: List<String>
112-
get() {
113-
val osName = System.getProperty("os.name").lowercase()
114-
val osArch = System.getProperty("os.arch").lowercase()
115-
val isWindows = osName.contains("win")
116-
val isMac = osName.contains("mac")
117-
118-
val dir = "unitytranslate/${if (isWindows) "windows" else if (isMac) "osx" else "linux"}-${osArch}"
119-
120-
return if (osArch == "amd64") {
121-
if (isWindows)
122-
listOf(
123-
"$dir/UnityTranslateLib.dll",
124-
"$dir/ctranslate2.dll",
125-
"$dir/cudnn64_9.dll",
126-
"$dir/libiomp5md.dll"
127-
)
128-
else if (isMac)
129-
listOf()
130-
else
131-
listOf(
132-
"$dir/libUnityTranslateLib.so",
133-
"$dir/libctranslate2.so",
134-
"$dir/libcudnn.so",
135-
"$dir/libgomp.so"
136-
)
137-
} else emptyList()
138-
}
139-
140146
private fun tryLoadFromClassPath(fullLibName: String): Path {
141147
val classLoader = UnityTranslateLib::class.java.classLoader
142148
val libs = platformLibs
@@ -170,8 +176,6 @@ class UnityTranslateLib(val path: Path) {
170176
return tmpDir
171177
}
172178

173-
private val cachedPlatformLibs = platformLibs
174-
175179
fun isAvailable(): Boolean {
176180
return cachedPlatformLibs.isNotEmpty()
177181
}

0 commit comments

Comments
 (0)