diff --git a/koala-wrapper/native/src/common.cc b/koala-wrapper/native/src/common.cc index e6c30a48b469d8d3f213489e0f96d5ec59c01de6..553a1079b72f7767f317fe0025f0a384f66bb1b7 100644 --- a/koala-wrapper/native/src/common.cc +++ b/koala-wrapper/native/src/common.cc @@ -41,15 +41,24 @@ static es2panda_Impl *impl = nullptr; const char* LIB_ES2PANDA_PUBLIC = LIB_PREFIX "es2panda_public" LIB_SUFFIX; +#ifdef KOALA_WINDOWS + const char *SEPARATOR = "\\"; +#else + const char *SEPARATOR = "/"; +#endif +const char *LIB_DIR = "lib"; + +static std::string ES2PANDA_LIB_PATH; + +void impl_SetUpSoPath(KStringPtr &soPath) +{ + ES2PANDA_LIB_PATH = std::string(soPath.c_str()); +} +KOALA_INTEROP_V1(SetUpSoPath, KStringPtr); + void* FindLibrary() { - std::string libraryName; - char* envValue = getenv("PANDA_SDK_PATH"); - if (envValue) { - libraryName = std::string(envValue) + ("/" PLUGIN_DIR "/lib/") + LIB_ES2PANDA_PUBLIC; - } else { - libraryName = LIB_ES2PANDA_PUBLIC; - } - return loadLibrary(libraryName); + std::string soFullPath = ES2PANDA_LIB_PATH + SEPARATOR + LIB_DIR + SEPARATOR + LIB_ES2PANDA_PUBLIC; + return loadLibrary(soFullPath); } es2panda_Impl *GetImpl() { diff --git a/koala-wrapper/src/Es2pandaNativeModule.ts b/koala-wrapper/src/Es2pandaNativeModule.ts index e509c21e3330bdda08f34d820cd5d9e46d3c5daa..b5c6629ec55a2c4757453c6df9dc04d4a2f4da0c 100644 --- a/koala-wrapper/src/Es2pandaNativeModule.ts +++ b/koala-wrapper/src/Es2pandaNativeModule.ts @@ -917,6 +917,10 @@ export class Es2pandaNativeModule { suggestionInfo?: KNativePointer, range?: KNativePointer): void { throw new Error('Not implemented'); } + + _SetUpSoPath(soPath: string): void { + throw new Error('Not implemented'); + } } export function initEs2panda(): Es2pandaNativeModule {