From 4bc5c29115d2e28b4748b0bd6e3968f53f3ca949 Mon Sep 17 00:00:00 2001 From: Tim Angus Date: Sun, 25 Sep 2005 22:04:51 +0000 Subject: [PATCH] * FreeBSD fixes/updates from Andreas Kohn --- code/game/q_shared.h | 2 +- code/qcommon/common.c | 2 +- code/qcommon/vm_x86.c | 2 +- code/renderer/qgl.h | 10 +--------- code/splines/q_shared.h | 28 ++++++++++++++++++++++++++++ code/splines/q_shared.hpp | 31 +++++++++++++++++++++++++++++++ code/unix/Makefile | 30 ++++++++++++++++-------------- code/unix/unix_shared.c | 4 ++-- 8 files changed, 81 insertions(+), 28 deletions(-) diff --git a/code/game/q_shared.h b/code/game/q_shared.h index 4b4fa312..c3a803c8 100644 --- a/code/game/q_shared.h +++ b/code/game/q_shared.h @@ -476,7 +476,7 @@ void *Hunk_AllocDebug( int size, ha_pref preference, char *label, char *file, in void *Hunk_Alloc( int size, ha_pref preference ); #endif -#ifdef __linux__ +#if defined(__GNUC__) // https://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=371 // custom Snd_Memset implementation for glibc memset bug workaround void Snd_Memset (void* dest, const int val, const size_t count); diff --git a/code/qcommon/common.c b/code/qcommon/common.c index aeed0095..f1b52ea1 100644 --- a/code/qcommon/common.c +++ b/code/qcommon/common.c @@ -24,7 +24,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include "../game/q_shared.h" #include "qcommon.h" #include -#if defined __linux__ || defined MACOS_X +#if defined __linux__ || defined MACOS_X || defined __FreeBSD__ #include #else #include diff --git a/code/qcommon/vm_x86.c b/code/qcommon/vm_x86.c index 5d2d3a7c..dbc1f375 100644 --- a/code/qcommon/vm_x86.c +++ b/code/qcommon/vm_x86.c @@ -1002,7 +1002,7 @@ void VM_Compile( vm_t *vm, vmHeader_t *header ) { case OP_CVFI: #ifndef FTOL_PTR // WHENHELLISFROZENOVER // bk001213 - was used in 1.17 // not IEEE complient, but simple and fast - EmitString( "D9 07" ); // fld dword ptr [edi] + EmitString( "D9 07" ); // fld dword ptr [edi] EmitString( "DB 1F" ); // fistp dword ptr [edi] #else // FTOL_PTR // call the library conversion function diff --git a/code/renderer/qgl.h b/code/renderer/qgl.h index e92b3d3b..9bc681cc 100644 --- a/code/renderer/qgl.h +++ b/code/renderer/qgl.h @@ -48,7 +48,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include "macosx_glimp.h" -#elif defined( __linux__ ) +#elif defined( __linux__ ) || defined(__FreeBSD__) #include #include @@ -57,14 +57,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include #endif -#elif defined( __FreeBSD__ ) // rb010123 - -#include -#include -#if defined(__FX__) -#include -#endif - #else #include diff --git a/code/splines/q_shared.h b/code/splines/q_shared.h index c554823b..fd789318 100644 --- a/code/splines/q_shared.h +++ b/code/splines/q_shared.h @@ -228,6 +228,34 @@ void Sys_PumpEvents( void ); #endif +//======================= FreeBSD DEFINES ===================== +/* Adapted from game/q_shared.h */ +#ifdef __FreeBSD__ // rb010123 + +#define stricmp strcasecmp + +#define MAC_STATIC +#define ID_INLINE inline + +#ifdef __i386__ +#define CPUSTRING "freebsd-i386" +#elif defined __axp__ +#define CPUSTRING "freebsd-alpha" +#else +#define CPUSTRING "freebsd-other" +#endif + +#define PATH_SEP '/' + +#ifdef Q3_STATIC +#define GAME_HARD_LINKED +#define CGAME_HARD_LINKED +#define UI_HARD_LINKED +#define BOTLIB_HARD_LINKED +#endif + +#endif + //============================================================= diff --git a/code/splines/q_shared.hpp b/code/splines/q_shared.hpp index faaaa22f..31ae71a6 100644 --- a/code/splines/q_shared.hpp +++ b/code/splines/q_shared.hpp @@ -216,6 +216,37 @@ void Sys_PumpEvents( void ); #endif +//======================= FreeBSD DEFINES ================================= + +// the mac compiler can't handle >32k of locals, so we +// just waste space and make big arrays static... +#ifdef __FreeBSD__ + +// bk001205 - from Makefile +#define stricmp strcasecmp + +#define MAC_STATIC // bk: FIXME + +#ifdef __i386__ +#define CPUSTRING "freebsd-i386" +#elif defined __axp__ +#define CPUSTRING "freebsd-alpha" +#else +#define CPUSTRING "freebsd-other" +#endif + +#define PATH_SEP '/' + +// bk001205 - try +#ifdef Q3_STATIC +#define GAME_HARD_LINKED +#define CGAME_HARD_LINKED +#define UI_HARD_LINKED +#define BOTLIB_HARD_LINKED +#endif + +#endif + //============================================================= diff --git a/code/unix/Makefile b/code/unix/Makefile index a344c563..dfcd43f8 100644 --- a/code/unix/Makefile +++ b/code/unix/Makefile @@ -317,15 +317,15 @@ ifeq ($(PLATFORM),freebsd) DEBUG_CFLAGS=$(BASE_CFLAGS) -g -Wall -Werror ifeq ($(ARCH),axp) - CC=pgcc + CC=gcc RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O3 -ffast-math -funroll-loops \ -fomit-frame-pointer -fexpensive-optimizations else - CC=pgcc + CC=gcc RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O3 -mtune=pentiumpro \ -march=pentium -fomit-frame-pointer -pipe -ffast-math \ - -malign-loops=2 -malign-jumps=2 -malign-functions=2 \ - -fno-strict-aliasing - fstrength-reduce + -falign-loops=2 -falign-jumps=2 -falign-functions=2 \ + -fno-strict-aliasing -fstrength-reduce endif LIBEXT=a @@ -411,12 +411,6 @@ else # ifeq IRIX ARFLAGS=ar rv RANLIB=ranlib - ifeq ($(PLATFORM),freebsd) - LDFLAGS=-lm - else - LDFLAGS=-ldl -lm - endif # ifeq freebsd - TARGETS=\ $(B)/$(PLATFORM)q3ded @@ -641,6 +635,9 @@ endif #platform specific objects ifeq ($(PLATFORM),freebsd) +ifeq ($(ARCH),axp) + Q3POBJ= +else Q3POBJ=\ $(B)/client/unix_main.o \ $(B)/client/unix_net.o \ @@ -653,9 +650,14 @@ ifeq ($(PLATFORM),freebsd) $(B)/client/linux_snd.o \ $(B)/client/sdl_snd.o \ $(B)/client/snd_mixa.o \ - $(B)/client/matha.o \ - $(B)/client/ftol.o \ - $(B)/client/snapvector.o + $(B)/client/matha.o + + ifeq ($(ARCH),i386) + Q3POBJ += $(B)/client/ftola.o $(B)/client/snapvectora.o + Q3POBJ_SMP += $(B)/client/ftola.o $(B)/client/snapvectora.o + endif + +endif # FreeBSD-axp else ifeq ($(PLATFORM),irix) Q3POBJ=\ @@ -880,7 +882,7 @@ $(B)/client/irix_glimp.o : $(UDIR)/irix_glimp.c; $(DO_CC) $(B)/client/irix_glimp_smp.o : $(UDIR)/irix_glimp.c; $(DO_SMP_CC) $(B)/client/irix_snd.o : $(UDIR)/irix_snd.c; $(DO_CC) $(B)/client/irix_input.o : $(UDIR)/irix_input.c; $(DO_CC) -$(B)/client/linux_signals.o : $(UDIR)/linux_signals.c; $(DO_CC) +$(B)/client/linux_signals.o : $(UDIR)/linux_signals.c; $(DO_CC) $(GL_CFLAGS) $(B)/client/linux_common.o : $(UDIR)/linux_common.c; $(DO_CC) $(B)/client/linux_glimp.o : $(UDIR)/linux_glimp.c; $(DO_CC) $(GL_CFLAGS) $(B)/client/sdl_glimp.o : $(UDIR)/sdl_glimp.c; $(DO_CC) $(GL_CFLAGS) diff --git a/code/unix/unix_shared.c b/code/unix/unix_shared.c index e3d0dad9..b39abc8c 100644 --- a/code/unix/unix_shared.c +++ b/code/unix/unix_shared.c @@ -76,7 +76,7 @@ int Sys_Milliseconds (void) return curtime; } -#if defined(__linux__) && !defined(DEDICATED) +#if (defined(__linux__) || defined(__FreeBSD__)) && !defined(DEDICATED) /* ================ Sys_XTimeToSysTime @@ -425,7 +425,7 @@ char *Sys_GetCurrentUser( void ) return p->pw_name; } -#if defined(__linux__) +#if defined(__linux__) || defined(__FreeBSD__) // TTimo // sysconf() in libc, POSIX.1 compliant unsigned int Sys_ProcessorCount(void)