char-fork/llama.cpp
git clone https://git.t4t.associates/char-fork/llama.cpp
ce38a4db4
char/aliceai-t5-moe
1#pragma once 2 3#ifdef _WIN32 4# define WIN32_LEAN_AND_MEAN 5# ifndef NOMINMAX 6# define NOMINMAX 7# endif 8# include <windows.h> 9# include <winevt.h> 10#else 11# include <dlfcn.h> 12# include <unistd.h> 13#endif 14#include <filesystem> 15 16namespace fs = std ::filesystem ; 17 18#ifdef _WIN32 19 20using dl_handle = std ::remove_pointer_t < HMODULE > ; 21 22struct dl_handle_deleter { 23void operator ()(HMODULE handle ) { 24FreeLibrary (handle ); 25 } 26}; 27 28static inline dl_handle * dl_load_library (const fs ::path & path ) { 29// suppress error dialogs for missing DLLs 30DWORD old_mode = SetErrorMode (SEM_FAILCRITICALERRORS ); 31SetErrorMode (old_mode |SEM_FAILCRITICALERRORS ); 32 33HMODULE handle = LoadLibraryW (path .wstring ().c_str ()); 34 35SetErrorMode (old_mode ); 36 37return handle ; 38} 39 40static inline void * dl_get_sym (dl_handle * handle ,const char * name ) { 41DWORD old_mode = SetErrorMode (SEM_FAILCRITICALERRORS ); 42SetErrorMode (old_mode |SEM_FAILCRITICALERRORS ); 43 44void * p = (void * )GetProcAddress (handle ,name ); 45 46SetErrorMode (old_mode ); 47 48return p ; 49} 50 51static inline const char * dl_error () { 52return "" ; 53} 54 55#else 56 57using dl_handle = void ; 58 59struct dl_handle_deleter { 60void operator ()(void * handle ) { 61dlclose (handle ); 62 } 63}; 64 65static inline dl_handle * dl_load_library (const fs ::path & path ) { 66dl_handle * handle = dlopen (path .string ().c_str (),RTLD_NOW |RTLD_LOCAL ); 67return handle ; 68} 69 70static inline void * dl_get_sym (dl_handle * handle ,const char * name ) { 71return dlsym (handle ,name ); 72} 73 74static inline const char * dl_error () { 75const char * rslt = dlerror (); 76return rslt != nullptr ?rslt :"" ; 77} 78 79#endif