From 128a1f59a9fa3c72373ddda6d3368e15ebab0c2e Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Thu, 24 Oct 2024 16:33:54 +0300 Subject: [PATCH] engine: cleanup XASH_64BIT usage. Always use it from build.h --- .gitignore | 3 ++ engine/platform/android/dlsym-weak.c | 5 ++- engine/platform/sdl/vid_sdl.c | 2 +- engine/server/sv_game.c | 60 ++++++++++++++-------------- engine/wscript | 1 - public/build.h | 4 ++ 6 files changed, 40 insertions(+), 35 deletions(-) diff --git a/.gitignore b/.gitignore index 315b72ca..ee36f6c2 100644 --- a/.gitignore +++ b/.gitignore @@ -342,3 +342,6 @@ enc_temp_folder/ # KDevelop4 *.kdev4 + +# ccls langauge server +.ccls-* diff --git a/engine/platform/android/dlsym-weak.c b/engine/platform/android/dlsym-weak.c index a4cb8196..bb9de255 100644 --- a/engine/platform/android/dlsym-weak.c +++ b/engine/platform/android/dlsym-weak.c @@ -26,7 +26,8 @@ * SUCH DAMAGE. */ -#if defined __ANDROID__ && !defined XASH_64BIT +#include "build.h" +#if XASH_ANDROID && !XASH_64BIT #include #include #include "linker.h" @@ -102,4 +103,4 @@ void *dlsym_weak( void *handle, const char *symbol ) __android_log_print( ANDROID_LOG_ERROR, "dlsym-weak", "Failed when looking up %s\n", symbol ); return NULL; } -#endif +#endif // XASH_ANDROID && !XASH_64BIT diff --git a/engine/platform/sdl/vid_sdl.c b/engine/platform/sdl/vid_sdl.c index f5ca7426..e1f70e86 100644 --- a/engine/platform/sdl/vid_sdl.c +++ b/engine/platform/sdl/vid_sdl.c @@ -674,7 +674,7 @@ static void VID_SetWindowIcon( SDL_Window *hWnd ) if( ico && WIN_SetWindowIcon( ico )) return; } -#endif // _WIN32 && !XASH_64BIT +#endif // XASH_WIN32 Q_strncpy( iconpath, GI->iconpath, sizeof( iconpath )); COM_ReplaceExtension( iconpath, ".tga", sizeof( iconpath )); diff --git a/engine/server/sv_game.c b/engine/server/sv_game.c index 2e0f2057..a977eb1c 100644 --- a/engine/server/sv_game.c +++ b/engine/server/sv_game.c @@ -2985,24 +2985,22 @@ static void *GAME_EXPORT pfnPvEntPrivateData( edict_t *pEdict ) } -#ifdef XASH_64BIT static struct str64_s { size_t maxstringarray; qboolean allowdup; + qboolean dynamic; char *staticstringarray; char *pstringarray; char *pstringarraystatic; char *pstringbase; char *poldstringbase; char *plast; - qboolean dynamic; size_t maxalloc; size_t numdups; size_t numoverflows; size_t totalalloc; } str64; -#endif /* ================== @@ -3013,7 +3011,7 @@ Free strings on server stop. Reset string pointer on 64 bits */ void SV_EmptyStringPool( void ) { -#ifdef XASH_64BIT +#if XASH_64BIT if( str64.dynamic ) // switch only after array fill (more space for multiplayer games) str64.pstringbase = str64.pstringarray; else @@ -3021,9 +3019,9 @@ void SV_EmptyStringPool( void ) str64.pstringbase = str64.poldstringbase = str64.pstringarraystatic; str64.plast = str64.pstringbase + 1; } -#else +#else // !XASH_64BIT Mem_EmptyPool( svgame.stringspool ); -#endif +#endif // !XASH_64BIT } /* @@ -3037,7 +3035,7 @@ this helps not to lose strings that belongs to static game part */ void SV_SetStringArrayMode( qboolean dynamic ) { -#ifdef XASH_64BIT +#if XASH_64BIT Con_Reportf( "%s(%d) %d\n", __func__, dynamic, str64.dynamic ); if( dynamic == str64.dynamic ) @@ -3046,11 +3044,11 @@ void SV_SetStringArrayMode( qboolean dynamic ) str64.dynamic = dynamic; SV_EmptyStringPool(); -#endif +#endif // !XASH_64BIT } #if XASH_AMD64 && XASH_LINUX && !XASH_ANDROID -#define USE_MMAP +#define USE_MMAP 1 #include #endif @@ -3066,7 +3064,7 @@ this case need patched game dll with MAKE_STRING checking ptrdiff size */ static void SV_AllocStringPool( void ) { -#ifdef XASH_64BIT +#if XASH_64BIT void *ptr = NULL; string lenstr; @@ -3081,7 +3079,7 @@ static void SV_AllocStringPool( void ) if( Sys_CheckParm( "-str64dup" ) ) str64.allowdup = true; -#ifdef USE_MMAP +#if USE_MMAP { uint flags; size_t pagesize = sysconf( _SC_PAGESIZE ); @@ -3135,35 +3133,37 @@ static void SV_AllocStringPool( void ) ptr = str64.staticstringarray = Mem_Calloc( host.mempool, str64.maxstringarray * 2 ); } } -#else +#else // !USE_MMAP ptr = str64.staticstringarray = Mem_Calloc( host.mempool, str64.maxstringarray * 2 ); -#endif +#endif // !USE_MMAP str64.pstringarray = ptr; str64.pstringarraystatic = (byte*)ptr + str64.maxstringarray; str64.pstringbase = str64.poldstringbase = ptr; str64.plast = (byte*)ptr + 1; svgame.globals->pStringBase = ptr; -#else +#else // !XASH_64BIT svgame.stringspool = Mem_AllocPool( "Server Strings" ); svgame.globals->pStringBase = ""; -#endif +#endif // !XASH_64BIT } static void SV_FreeStringPool( void ) { -#ifdef XASH_64BIT +#if XASH_64BIT Con_Reportf( "%s()\n", __func__ ); -#ifdef USE_MMAP +#if USE_MMAP if( str64.pstringarray != str64.staticstringarray ) munmap( str64.pstringarray, (str64.maxstringarray * 2) & ~(sysconf( _SC_PAGESIZE ) - 1) ); else -#endif +#endif // USE_MMAP + { Mem_Free( str64.staticstringarray ); -#else + } +#else // !XASH_64BIT Mem_FreePool( &svgame.stringspool ); -#endif +#endif // !XASH_64BIT } /* @@ -3234,9 +3234,7 @@ string_t GAME_EXPORT SV_AllocString( const char *szValue ) { char *newString = NULL; uint len; -#ifdef XASH_64BIT int cmp; -#endif if( svgame.physFuncs.pfnAllocString != NULL ) { @@ -3252,7 +3250,7 @@ string_t GAME_EXPORT SV_AllocString( const char *szValue ) return i; } -#ifdef XASH_64BIT +#if XASH_64BIT cmp = 1; if( !str64.allowdup ) @@ -3290,18 +3288,18 @@ string_t GAME_EXPORT SV_AllocString( const char *szValue ) str64.maxalloc = newString - str64.pstringarray; return newString - svgame.globals->pStringBase; -#else +#else // !XASH_64BIT len = SV_ProcessString( NULL, szValue ); newString = Mem_Malloc( svgame.stringspool, len ); SV_ProcessString( newString, szValue ); return newString - svgame.globals->pStringBase; -#endif +#endif // !XASH_64BIT } void SV_PrintStr64Stats_f( void ) { -#ifdef XASH_64BIT +#if XASH_64BIT Con_Printf( "====================\n" ); Con_Printf( "64 bit string pool statistics\n" ); Con_Printf( "====================\n" ); @@ -3310,9 +3308,9 @@ void SV_PrintStr64Stats_f( void ) Con_Printf( "maximum array usage: %lu\n", str64.maxalloc ); Con_Printf( "overflow counter: %lu\n", str64.numoverflows ); Con_Printf( "dup string counter: %lu\n", str64.numdups ); -#else +#else // !XASH_64BIT Con_Printf( "Not implemented\n" ); -#endif +#endif // !XASH_64BIT } /* @@ -3326,7 +3324,7 @@ string_t SV_MakeString( const char *szValue ) { if( svgame.physFuncs.pfnMakeString != NULL ) return svgame.physFuncs.pfnMakeString( szValue ); -#ifdef XASH_64BIT +#if XASH_64BIT { long long ptrdiff = szValue - svgame.globals->pStringBase; if( ptrdiff > INT_MAX || ptrdiff < INT_MIN ) @@ -3334,9 +3332,9 @@ string_t SV_MakeString( const char *szValue ) else return (int)ptrdiff; } -#else +#else // !XASH_64BIT return szValue - svgame.globals->pStringBase; -#endif +#endif // !XASH_64BIT } /* diff --git a/engine/wscript b/engine/wscript index 1dbc39f2..97b359e4 100644 --- a/engine/wscript +++ b/engine/wscript @@ -128,7 +128,6 @@ def configure(conf): conf.define_cond('XASH_ENABLE_MAIN', conf.env.DISABLE_LAUNCHER) conf.define_cond('XASH_NO_ASYNC_NS_RESOLVE', conf.options.NO_ASYNC_RESOLVE) conf.define_cond('SUPPORT_BSP2_FORMAT', conf.options.SUPPORT_BSP2_FORMAT) - conf.define_cond('XASH_64BIT', conf.env.DEST_SIZEOF_VOID_P != 4) conf.define_cond('DBGHELP', conf.env.DEST_OS == 'win32') conf.define_cond('PSAPI_VERSION', conf.env.DEST_OS == 'win32') # will be defined as 1 diff --git a/public/build.h b/public/build.h index 718dc01a..123541ae 100644 --- a/public/build.h +++ b/public/build.h @@ -247,6 +247,10 @@ Then you can use another oneliner to query all variables: #error "Place your architecture name here! If this is a mistake, try to fix conditions above and report a bug" #endif +#if !XASH_64BIT && ( defined( __LP64__ ) || defined( _LP64 )) +#define XASH_64BIT 1 +#endif + #if XASH_ARM == 8 #define XASH_ARMv8 1 #elif XASH_ARM == 7