aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--code/game/q_shared.h2
-rw-r--r--code/qcommon/common.c2
-rw-r--r--code/qcommon/vm_x86.c2
-rw-r--r--code/renderer/qgl.h10
-rw-r--r--code/splines/q_shared.h28
-rw-r--r--code/splines/q_shared.hpp31
-rw-r--r--code/unix/Makefile30
-rw-r--r--code/unix/unix_shared.c4
8 files changed, 81 insertions, 28 deletions
diff --git a/code/game/q_shared.h b/code/game/q_shared.h
index 4b4fa31..c3a803c 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 aeed009..f1b52ea 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 <setjmp.h>
-#if defined __linux__ || defined MACOS_X
+#if defined __linux__ || defined MACOS_X || defined __FreeBSD__
#include <netinet/in.h>
#else
#include <winsock.h>
diff --git a/code/qcommon/vm_x86.c b/code/qcommon/vm_x86.c
index 5d2d3a7..dbc1f37 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 e92b3d3..9bc681c 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 <GL/gl.h>
#include <GL/glx.h>
@@ -57,14 +57,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#include <GL/fxmesa.h>
#endif
-#elif defined( __FreeBSD__ ) // rb010123
-
-#include <GL/gl.h>
-#include <GL/glx.h>
-#if defined(__FX__)
-#include <GL/fxmesa.h>
-#endif
-
#else
#include <gl.h>
diff --git a/code/splines/q_shared.h b/code/splines/q_shared.h
index c554823..fd78931 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 faaaa22..31ae71a 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 a344c56..dfcd43f 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 e3d0dad..b39abc8 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)