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