diff --git a/engine/platform/android/lib_android.h b/engine/platform/android/lib_android.h index a88218ec..e83292c4 100644 --- a/engine/platform/android/lib_android.h +++ b/engine/platform/android/lib_android.h @@ -13,10 +13,15 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. */ #pragma once +#if XASH_ANDROID #ifndef ANDROID_LIB_H #define ANDROID_LIB_H +#define Platform_POSIX_LoadLibrary( x ) Android_LoadLibrary(( x )) +#define Platform_POSIX_GetProcAddress( x, y ) Android_GetProcAddress(( x ), ( y )) + void *ANDROID_LoadLibrary( const char *dllname ); void *ANDROID_GetProcAddress( void *hInstance, const char *name ); #endif // ANDROID_LIB_H +#endif // XASH_ANDROID diff --git a/engine/platform/apple/lib_ios.h b/engine/platform/apple/lib_ios.h index 6b911c1e..33f222f4 100644 --- a/engine/platform/apple/lib_ios.h +++ b/engine/platform/apple/lib_ios.h @@ -17,6 +17,8 @@ GNU General Public License for more details. #ifndef IOS_LIB_H #define IOS_LIB_H +#define Platform_POSIX_LoadLibrary( x ) IOS_LoadLibrary(( x )) + void *IOS_LoadLibrary( const char *dllname ); #endif // IOS_LIB_H diff --git a/engine/platform/emscripten/lib_em.h b/engine/platform/emscripten/lib_em.h index 4d131f1b..7682306c 100644 --- a/engine/platform/emscripten/lib_em.h +++ b/engine/platform/emscripten/lib_em.h @@ -17,6 +17,11 @@ GNU General Public License for more details. #ifndef EM_LIB_H #define EM_LIB_H +#define Platform_POSIX_LoadLibrary( x ) EMSCRIPTEN_LoadLibrary(( x )) +#ifndef EMSCRIPTEN_LIB_FS +#define Platform_POSIX_FreeLibrary( x ) // nothing +#endif // EMSCRIPTEN_LIB_FS + void *EMSCRIPTEN_LoadLibrary( const char *dllname ); #endif // EM_LIB_H diff --git a/engine/platform/posix/lib_posix.c b/engine/platform/posix/lib_posix.c index 6c0fc76a..9fe9b21a 100644 --- a/engine/platform/posix/lib_posix.c +++ b/engine/platform/posix/lib_posix.c @@ -72,12 +72,8 @@ void *COM_LoadLibrary( const char *dllname, int build_ordinals_table, qboolean d COM_ResetLibraryError(); // platforms where gameinfo mechanism is impossible -#if TARGET_OS_IPHONE - return IOS_LoadLibrary( dllname ); -#elif defined( __EMSCRIPTEN__ ) - return EMSCRIPTEN_LoadLibrary( dllname ); -#elif defined( __ANDROID__ ) - return ANDROID_LoadLibrary( dllname ); +#ifdef Platform_POSIX_LoadLibrary + return Platform_POSIX_LoadLibrary( dllname ); #endif // platforms where gameinfo mechanism is working goes here @@ -156,9 +152,13 @@ void COM_FreeLibrary( void *hInstance ) return Loader_FreeLibrary( hInstance ); else #endif -#if !defined __EMSCRIPTEN__ || defined EMSCRIPTEN_LIB_FS - dlclose( hInstance ); + { +#ifdef Platform_POSIX_FreeLibrary + Platform_POSIX_FreeLibrary( hInstance ); +#else + dlclose( hInstance ); #endif + } } void *COM_GetProcAddress( void *hInstance, const char *name ) @@ -169,8 +169,8 @@ void *COM_GetProcAddress( void *hInstance, const char *name ) return Loader_GetProcAddress(hInstance, name); else #endif -#if defined(__ANDROID__) - return ANDROID_GetProcAddress( hInstance, name ); +#if Platform_POSIX_GetProcAddress + return Platform_POSIX_GetProcAddress( hInstance, name ); #else return dlsym( hInstance, name ); #endif