mirror of
https://github.com/YGGverse/xash3d-fwgs.git
synced 2025-01-30 08:44:31 +00:00
platform: define platform-specific posix-compatible library loaders as macros to reduce macros hell in lib_posix.c
This commit is contained in:
parent
1decb1c7fb
commit
6e637456ef
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user