11package com .thecoderscorner .menu .editorui .util ;
22
3+ import com .thecoderscorner .menu .editorui .generator .plugin .DefaultXmlPluginLoader ;
4+
35import java .lang .foreign .FunctionDescriptor ;
46import java .lang .foreign .Linker ;
57import java .lang .foreign .SymbolLookup ;
@@ -25,7 +27,7 @@ public class TcNativeLibrary {
2527
2628 private TcNativeLibrary () {
2729 logger .log (System .Logger .Level .INFO , "Loading TcNative Library" );
28- System . loadLibrary ("tcMenuNative" );
30+ loadLibrary ();
2931 logger .log (System .Logger .Level .INFO , "Creating native linker" );
3032 Linker linker = Linker .nativeLinker ();
3133 SymbolLookup fontLib = SymbolLookup .loaderLookup ();
@@ -66,6 +68,24 @@ private TcNativeLibrary() {
6668 );
6769 }
6870
71+ private static void loadLibrary () {
72+ String os = System .getProperty ("os.name" );
73+ if (System .getProperty ("devlog" ) != null ) {
74+ logger .log (System .Logger .Level .INFO , "Assuming native library on LD_LIBRARY_PATH already" );
75+ System .loadLibrary ("tcMenuNative" );
76+ }else if (os != null && os .startsWith ("Mac" )) {
77+ var path = DefaultXmlPluginLoader .findPluginDir ().resolve ("mac" ).resolve ("libtcMenuNative.dylib" );
78+ System .load (path .toString ());
79+ } else if (os != null && os .startsWith ("Win" )) {
80+ var path = DefaultXmlPluginLoader .findPluginDir ().resolve ("win" ).resolve ("tcMenuNative.dll" );
81+ System .load (path .toString ());
82+ } else if (os != null && os .startsWith ("Linux" )) {
83+ var path = DefaultXmlPluginLoader .findPluginDir ().resolve ("ubu" ).resolve ("libtcMenuNative.so" );
84+ System .load (path .toString ());
85+ }
86+
87+ }
88+
6989 public static TcNativeLibrary getInstance () {
7090 var ret = theInstance .get ();
7191 if (ret == null ) {
0 commit comments