summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile60
-rw-r--r--src/qcommon/q_shared.h11
-rw-r--r--src/sdl/sdl_glimp.c8
-rw-r--r--src/sys/con_tty.c (renamed from src/sys/tty_console.c)84
-rw-r--r--src/sys/con_win32.c70
-rw-r--r--src/sys/sys_loadlib.h16
-rw-r--r--src/sys/sys_local.h12
-rw-r--r--src/sys/sys_main.c47
8 files changed, 219 insertions, 89 deletions
diff --git a/Makefile b/Makefile
index 2f5759f2..706195ca 100644
--- a/Makefile
+++ b/Makefile
@@ -1,14 +1,6 @@
#
# Tremulous Makefile
#
-# Nov '98 by Zoid <zoid@idsoftware.com>
-#
-# Loki Hacking by Bernd Kreimeier
-# and a little more by Ryan C. Gordon.
-# and a little more by Rafael Barrero
-# and a little more by the ioq3 cr3w
-# and a little more by Tim Angus
-#
# GNU Make required
#
@@ -141,14 +133,14 @@ LIBSDIR=$(MOUNT_DIR)/libs
MASTERDIR=$(MOUNT_DIR)/master
# extract version info
-VERSION=$(shell grep "\#define VERSION_NUMBER" $(CMDIR)/q_shared.h | \
+VERSION=$(shell grep "\#define *PRODUCT_VERSION" $(CMDIR)/q_shared.h | \
sed -e 's/[^"]*"\(.*\)"/\1/')
USE_SVN=
ifeq ($(wildcard .svn),.svn)
SVN_REV=$(shell LANG=C svnversion .)
ifneq ($(SVN_REV),)
- SVN_VERSION=$(SVN_REV)
+ SVN_VERSION=$(VERSION)_SVN$(SVN_REV)
USE_SVN=1
endif
endif
@@ -433,8 +425,8 @@ endif
BINEXT=.exe
- LDFLAGS= -mwindows -lwsock32 -lgdi32 -lwinmm -lole32 -lopengl32
- CLIENT_LDFLAGS=
+ LDFLAGS= -mwindows -lwsock32 -lwinmm
+ CLIENT_LDFLAGS = -lgdi32 -lole32 -lopengl32
ifeq ($(USE_CURL),1)
ifneq ($(USE_CURL_DLOPEN),1)
@@ -460,7 +452,6 @@ endif
$(LIBSDIR)/win32/libSDLmain.a \
$(LIBSDIR)/win32/libSDL.dll.a
- BUILD_SERVER = 0
BUILD_CLIENT_SMP = 0
else # ifeq mingw32
@@ -729,7 +720,7 @@ echo_cmd=@echo
Q=@
endif
-define DO_CC
+define DO_CC
$(echo_cmd) "CC $<"
$(Q)$(CC) $(NOTSHLIBCFLAGS) $(CFLAGS) -o $@ -c $<
endef
@@ -791,7 +782,7 @@ endif
# Create the build directories and tools, print out
# an informational message, then start building
-targets: makedirs tools
+targets: makedirs tools libversioncheck
@echo ""
@echo "Building Tremulous in $(B):"
@echo " PLATFORM: $(PLATFORM)"
@@ -850,6 +841,28 @@ endef
#############################################################################
+# LIBRARY VERSION CHECKS
+#############################################################################
+
+MINSDL_MAJOR = 1
+MINSDL_MINOR = 2
+MINSDL_PATCH = 7
+
+BASE_CFLAGS += -DMINSDL_MAJOR=$(MINSDL_MAJOR) \
+ -DMINSDL_MINOR=$(MINSDL_MINOR) \
+ -DMINSDL_PATCH=$(MINSDL_PATCH)
+
+libversioncheck:
+ @echo "#include \"SDL_version.h\"\n" \
+ "#if SDL_VERSION_ATLEAST(" \
+ "$(MINSDL_MAJOR),$(MINSDL_MINOR),$(MINSDL_PATCH)" \
+ ")\nMINSDL_PASSED\n#endif" | \
+ $(CC) $(BASE_CFLAGS) -E - | grep -q MINSDL_PASSED || \
+ ( echo "SDL version $(MINSDL_MAJOR).$(MINSDL_MINOR).$(MINSDL_PATCH)" \
+ "or greater required" && exit 1 )
+
+
+#############################################################################
# CLIENT/SERVER
#############################################################################
@@ -1078,9 +1091,6 @@ Q3DOBJ = \
$(B)/ded/null_input.o \
$(B)/ded/null_snddma.o \
\
- $(B)/ded/tty_console.o \
- $(B)/ded/sys_unix.o \
- \
$(B)/ded/sys_main.o
ifeq ($(ARCH),x86)
@@ -1102,6 +1112,17 @@ ifeq ($(HAVE_VM_COMPILED),true)
endif
endif
+ifeq ($(PLATFORM),mingw32)
+ Q3DOBJ += \
+ $(B)/ded/win_resource.o \
+ $(B)/ded/sys_win32.o \
+ $(B)/ded/con_win32.o
+else
+ Q3DOBJ += \
+ $(B)/ded/sys_unix.o \
+ $(B)/ded/con_tty.o
+endif
+
$(B)/tremded.$(ARCH)$(BINEXT): $(Q3DOBJ)
$(echo_cmd) "LD $@"
$(Q)$(CC) -o $@ $(Q3DOBJ) $(LDFLAGS)
@@ -1286,6 +1307,9 @@ $(B)/ded/%.o: $(BLIBDIR)/%.c
$(B)/ded/%.o: $(SYSDIR)/%.c
$(DO_DED_CC)
+$(B)/ded/%.o: $(SYSDIR)/%.rc
+ $(DO_WINDRES)
+
$(B)/ded/%.o: $(NDIR)/%.c
$(DO_DED_CC)
diff --git a/src/qcommon/q_shared.h b/src/qcommon/q_shared.h
index 7a6644ec..f57575c2 100644
--- a/src/qcommon/q_shared.h
+++ b/src/qcommon/q_shared.h
@@ -27,15 +27,16 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
// q_shared.h -- included first by ALL program modules.
// A user mod should never modify this file
-#define VERSION_NUMBER "1.1.0"
-#define Q3_VERSION_BASE "tremulous " VERSION_NUMBER
+#define PRODUCT_NAME "tremulous"
+#define PRODUCT_VERSION "1.1.0"
+
#ifdef SVN_VERSION
-# define Q3_VERSION Q3_VERSION_BASE "_SVN" SVN_VERSION
+# define Q3_VERSION PRODUCT_NAME " " SVN_VERSION
#else
-# define Q3_VERSION Q3_VERSION_BASE
+# define Q3_VERSION PRODUCT_NAME " " PRODUCT_VERSION
#endif
-#define CLIENT_WINDOW_TITLE "Tremulous " VERSION_NUMBER
+#define CLIENT_WINDOW_TITLE "Tremulous " PRODUCT_VERSION
#define CLIENT_WINDOW_MIN_TITLE "Tremulous"
#define MAX_TEAMNAME 32
diff --git a/src/sdl/sdl_glimp.c b/src/sdl/sdl_glimp.c
index fa64d50a..07b80a81 100644
--- a/src/sdl/sdl_glimp.c
+++ b/src/sdl/sdl_glimp.c
@@ -22,6 +22,13 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#include "SDL.h"
+#if !SDL_VERSION_ATLEAST(1, 2, 10)
+#define SDL_GL_ACCELERATED_VISUAL 15
+#define SDL_GL_SWAP_CONTROL 16
+#elif MINSDL_PATCH >= 10
+#error Code block no longer necessary, please remove
+#endif
+
#ifdef SMP
#include "SDL_thread.h"
#endif
@@ -37,6 +44,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
/* Just hack it for now. */
#ifdef MACOS_X
+#include <OpenGL/OpenGL.h>
typedef CGLContextObj QGLContext;
#define GLimp_GetCurrentContext() CGLGetCurrentContext()
#define GLimp_SetCurrentContext(ctx) CGLSetCurrentContext(ctx)
diff --git a/src/sys/tty_console.c b/src/sys/con_tty.c
index 7ac5e7aa..dd37c19c 100644
--- a/src/sys/tty_console.c
+++ b/src/sys/con_tty.c
@@ -2,20 +2,20 @@
===========================================================================
Copyright (C) 1999-2005 Id Software, Inc.
-This file is part of Tremulous.
+This file is part of Quake III Arena source code.
-Tremulous is free software; you can redistribute it
+Quake III Arena source code is free software; you can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.
-Tremulous is distributed in the hope that it will be
+Quake III Arena source code is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
-along with Tremulous; if not, write to the Free Software
+along with Quake III Arena source code; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
===========================================================================
*/
@@ -33,7 +33,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
tty console routines
NOTE: if the user is editing a line when something gets printed to the early
-console then it won't look good so we provide TTY_Hide and TTY_Show to be
+console then it won't look good so we provide CON_Hide and CON_Show to be
called before and after a stdout or stderr output
=============================================================
*/
@@ -52,19 +52,19 @@ static field_t TTY_con;
// This is somewhat of aduplicate of the graphical console history
// but it's safer more modular to have our own here
-#define TTY_HISTORY 32
-static field_t ttyEditLines[ TTY_HISTORY ];
+#define CON_HISTORY 32
+static field_t ttyEditLines[ CON_HISTORY ];
static int hist_current = -1, hist_count = 0;
/*
==================
-TTY_FlushIn
+CON_FlushIn
Flush stdin, I suspect some terminals are sending a LOT of shit
FIXME relevant?
==================
*/
-static void TTY_FlushIn( void )
+static void CON_FlushIn( void )
{
char key;
while (read(0, &key, 1)!=-1);
@@ -72,7 +72,7 @@ static void TTY_FlushIn( void )
/*
==================
-TTY_Back
+CON_Back
Output a backspace
@@ -81,7 +81,7 @@ send "\b \b"
(FIXME there may be a way to find out if '\b' alone would work though)
==================
*/
-static void TTY_Back( void )
+static void CON_Back( void )
{
char key;
key = '\b';
@@ -94,13 +94,13 @@ static void TTY_Back( void )
/*
==================
-TTY_Hide
+CON_Hide
Clear the display of the line currently edited
bring cursor back to beginning of line
==================
*/
-void TTY_Hide( void )
+void CON_Hide( void )
{
if( ttycon_on )
{
@@ -114,23 +114,23 @@ void TTY_Hide( void )
{
for (i=0; i<TTY_con.cursor; i++)
{
- TTY_Back();
+ CON_Back();
}
}
- TTY_Back(); // Delete "]"
+ CON_Back(); // Delete "]"
ttycon_hide++;
}
}
/*
==================
-TTY_Show
+CON_Show
Show the current line
FIXME need to position the cursor if needed?
==================
*/
-void TTY_Show( void )
+void CON_Show( void )
{
if( ttycon_on )
{
@@ -154,21 +154,21 @@ void TTY_Show( void )
/*
==================
-TTY_Shutdown
+CON_Shutdown
Never exit without calling this, or your terminal will be left in a pretty bad state
==================
*/
-void TTY_Shutdown( void )
+void CON_Shutdown( void )
{
if (ttycon_on)
{
- TTY_Back(); // Delete "]"
+ CON_Back(); // Delete "]"
tcsetattr (0, TCSADRAIN, &TTY_tc);
-
- // Restore blocking to stdin reads
- fcntl( 0, F_SETFL, fcntl( 0, F_GETFL, 0 ) & ~O_NDELAY );
}
+
+ // Restore blocking to stdin reads
+ fcntl( 0, F_SETFL, fcntl( 0, F_GETFL, 0 ) & ~O_NDELAY );
}
/*
@@ -179,17 +179,17 @@ Hist_Add
void Hist_Add(field_t *field)
{
int i;
- assert(hist_count <= TTY_HISTORY);
+ assert(hist_count <= CON_HISTORY);
assert(hist_count >= 0);
assert(hist_current >= -1);
assert(hist_current <= hist_count);
// make some room
- for (i=TTY_HISTORY-1; i>0; i--)
+ for (i=CON_HISTORY-1; i>0; i--)
{
ttyEditLines[i] = ttyEditLines[i-1];
}
ttyEditLines[0] = *field;
- if (hist_count<TTY_HISTORY)
+ if (hist_count<CON_HISTORY)
{
hist_count++;
}
@@ -204,7 +204,7 @@ Hist_Prev
field_t *Hist_Prev( void )
{
int hist_prev;
- assert(hist_count <= TTY_HISTORY);
+ assert(hist_count <= CON_HISTORY);
assert(hist_count >= 0);
assert(hist_current >= -1);
assert(hist_current <= hist_count);
@@ -224,7 +224,7 @@ Hist_Next
*/
field_t *Hist_Next( void )
{
- assert(hist_count <= TTY_HISTORY);
+ assert(hist_count <= CON_HISTORY);
assert(hist_count >= 0);
assert(hist_current >= -1);
assert(hist_current <= hist_count);
@@ -241,12 +241,12 @@ field_t *Hist_Next( void )
/*
==================
-TTY_Init
+CON_Init
Initialize the console input (tty mode if possible)
==================
*/
-void TTY_Init( void )
+void CON_Init( void )
{
struct termios tc;
@@ -295,10 +295,10 @@ void TTY_Init( void )
/*
==================
-TTY_ConsoleInput
+CON_ConsoleInput
==================
*/
-char *TTY_ConsoleInput( void )
+char *CON_ConsoleInput( void )
{
// we use this when sending back commands
static char text[256];
@@ -320,7 +320,7 @@ char *TTY_ConsoleInput( void )
{
TTY_con.cursor--;
TTY_con.buffer[TTY_con.cursor] = '\0';
- TTY_Back();
+ CON_Back();
}
return NULL;
}
@@ -340,9 +340,9 @@ char *TTY_ConsoleInput( void )
}
if (key == '\t')
{
- TTY_Hide();
+ CON_Hide();
Field_AutoComplete( &TTY_con );
- TTY_Show();
+ CON_Show();
return NULL;
}
avail = read(0, &key, 1);
@@ -360,16 +360,16 @@ char *TTY_ConsoleInput( void )
history = Hist_Prev();
if (history)
{
- TTY_Hide();
+ CON_Hide();
TTY_con = *history;
- TTY_Show();
+ CON_Show();
}
- TTY_FlushIn();
+ CON_FlushIn();
return NULL;
break;
case 'B':
history = Hist_Next();
- TTY_Hide();
+ CON_Hide();
if (history)
{
TTY_con = *history;
@@ -377,8 +377,8 @@ char *TTY_ConsoleInput( void )
{
Field_Clear(&TTY_con);
}
- TTY_Show();
- TTY_FlushIn();
+ CON_Show();
+ CON_FlushIn();
return NULL;
break;
case 'C':
@@ -390,7 +390,7 @@ char *TTY_ConsoleInput( void )
}
}
Com_DPrintf("droping ISCTL sequence: %d, TTY_erase: %d\n", key, TTY_erase);
- TTY_FlushIn();
+ CON_FlushIn();
return NULL;
}
// push regular character
diff --git a/src/sys/con_win32.c b/src/sys/con_win32.c
new file mode 100644
index 00000000..ea3cfb7c
--- /dev/null
+++ b/src/sys/con_win32.c
@@ -0,0 +1,70 @@
+/*
+===========================================================================
+Copyright (C) 1999-2005 Id Software, Inc.
+
+This file is part of Tremulous.
+
+Tremulous is free software; you can redistribute it
+and/or modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation; either version 2 of the License,
+or (at your option) any later version.
+
+Tremulous is distributed in the hope that it will be
+useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Tremulous; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+===========================================================================
+*/
+
+#include "../qcommon/q_shared.h"
+#include "../qcommon/qcommon.h"
+
+/*
+==================
+CON_Hide
+==================
+*/
+void CON_Hide( void )
+{
+}
+
+/*
+==================
+CON_Show
+==================
+*/
+void CON_Show( void )
+{
+}
+
+/*
+==================
+CON_Shutdown
+==================
+*/
+void CON_Shutdown( void )
+{
+}
+
+/*
+==================
+CON_Init
+==================
+*/
+void CON_Init( void )
+{
+}
+
+/*
+==================
+CON_ConsoleInput
+==================
+*/
+char *CON_ConsoleInput( void )
+{
+ return NULL;
+}
diff --git a/src/sys/sys_loadlib.h b/src/sys/sys_loadlib.h
index 4a2f9809..a0196f38 100644
--- a/src/sys/sys_loadlib.h
+++ b/src/sys/sys_loadlib.h
@@ -21,11 +21,19 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifdef DEDICATED
+# ifdef _WIN32
+# include <windows.h>
+# define Sys_LoadLibrary(f) (void*)LoadLibrary(f)
+# define Sys_UnloadLibrary(h) FreeLibrary((HMODULE)h)
+# define Sys_LoadFunction(h,fn) (void*)GetProcAddress((HMODULE)h,fn)
+# define Sys_LibraryError() "unknown"
+# else
# include <dlfcn.h>
-# define Sys_LoadLibrary(f) dlopen(f,RTLD_NOW)
-# define Sys_UnloadLibrary(h) dlclose(h)
-# define Sys_LoadFunction(h,fn) dlsym(h,fn)
-# define Sys_LibraryError() dlerror()
+# define Sys_LoadLibrary(f) dlopen(f,RTLD_NOW)
+# define Sys_UnloadLibrary(h) dlclose(h)
+# define Sys_LoadFunction(h,fn) dlsym(h,fn)
+# define Sys_LibraryError() dlerror()
+#endif
#else
# include "SDL.h"
# include "SDL_loadso.h"
diff --git a/src/sys/sys_local.h b/src/sys/sys_local.h
index 62145b29..03a0a095 100644
--- a/src/sys/sys_local.h
+++ b/src/sys/sys_local.h
@@ -28,12 +28,12 @@ void IN_Init (void);
void IN_Frame (void);
void IN_Shutdown (void);
-// TTY console
-void TTY_Hide( void );
-void TTY_Show( void );
-void TTY_Shutdown( void );
-void TTY_Init( void );
-char *TTY_ConsoleInput(void);
+// Console
+void CON_Hide( void );
+void CON_Show( void );
+void CON_Shutdown( void );
+void CON_Init( void );
+char *CON_ConsoleInput(void);
#ifdef MACOS_X
char *Sys_StripAppBundle( char *pwd );
diff --git a/src/sys/sys_main.c b/src/sys/sys_main.c
index 975ce166..b7784b00 100644
--- a/src/sys/sys_main.c
+++ b/src/sys/sys_main.c
@@ -35,6 +35,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#ifndef DEDICATED
#include "SDL.h"
+#include "SDL_cpuinfo.h"
#endif
#include "sys_local.h"
@@ -112,7 +113,7 @@ Start the console input subsystem
void Sys_ConsoleInputInit( void )
{
#ifdef DEDICATED
- TTY_Init( );
+ CON_Init( );
#endif
}
@@ -126,7 +127,7 @@ Shutdown the console input subsystem
void Sys_ConsoleInputShutdown( void )
{
#ifdef DEDICATED
- TTY_Shutdown( );
+ CON_Shutdown( );
#endif
}
@@ -140,7 +141,7 @@ Handle new console input
char *Sys_ConsoleInput(void)
{
#ifdef DEDICATED
- return TTY_ConsoleInput( );
+ return CON_ConsoleInput( );
#endif
return NULL;
@@ -223,7 +224,7 @@ static struct Q3ToAnsiColorTable_s
{
char Q3color;
char *ANSIcolor;
-} TTY_colorTable[ ] =
+} CON_colorTable[ ] =
{
{ COLOR_BLACK, "30" },
{ COLOR_RED, "31" },
@@ -235,8 +236,8 @@ static struct Q3ToAnsiColorTable_s
{ COLOR_WHITE, "0" }
};
-static int TTY_colorTableSize =
- sizeof( TTY_colorTable ) / sizeof( TTY_colorTable[ 0 ] );
+static int CON_colorTableSize =
+ sizeof( CON_colorTable ) / sizeof( CON_colorTable[ 0 ] );
/*
=================
@@ -275,11 +276,11 @@ static void Sys_ANSIColorify( const char *msg, char *buffer, int bufferSize )
if( i < msgLength )
{
escapeCode = NULL;
- for( j = 0; j < TTY_colorTableSize; j++ )
+ for( j = 0; j < CON_colorTableSize; j++ )
{
- if( msg[ i ] == TTY_colorTable[ j ].Q3color )
+ if( msg[ i ] == CON_colorTable[ j ].Q3color )
{
- escapeCode = TTY_colorTable[ j ].ANSIcolor;
+ escapeCode = CON_colorTable[ j ].ANSIcolor;
break;
}
}
@@ -309,7 +310,7 @@ Sys_Print
void Sys_Print( const char *msg )
{
#ifdef DEDICATED
- TTY_Hide();
+ CON_Hide();
#endif
if( com_ansiColor && com_ansiColor->integer )
@@ -322,7 +323,7 @@ void Sys_Print( const char *msg )
fputs(msg, stderr);
#ifdef DEDICATED
- TTY_Show();
+ CON_Show();
#endif
}
@@ -337,7 +338,7 @@ void Sys_Error( const char *error, ... )
char string[1024];
#ifdef DEDICATED
- TTY_Hide();
+ CON_Hide();
#endif
CL_Shutdown ();
@@ -365,13 +366,13 @@ void Sys_Warn( char *warning, ... )
va_end (argptr);
#ifdef DEDICATED
- TTY_Hide();
+ CON_Hide();
#endif
fprintf(stderr, "Warning: %s", string);
#ifdef DEDICATED
- TTY_Show();
+ CON_Show();
#endif
}
@@ -604,6 +605,24 @@ int main( int argc, char **argv )
int i;
char commandLine[ MAX_STRING_CHARS ] = { 0 };
+#ifndef DEDICATED
+ const SDL_version *ver = SDL_Linked_Version( );
+
+#define STRING(s) #s
+#define XSTRING(s) STRING(s)
+#define MINSDL_VERSION \
+ XSTRING(MINSDL_MAJOR) "." \
+ XSTRING(MINSDL_MINOR) "." \
+ XSTRING(MINSDL_PATCH)
+
+ if( SDL_VERSIONNUM( ver->major, ver->minor, ver->patch ) <
+ SDL_VERSIONNUM( MINSDL_MAJOR, MINSDL_MINOR, MINSDL_PATCH ) )
+ {
+ Sys_Print( "SDL version " MINSDL_VERSION " or greater required\n" );
+ Sys_Exit( 1 );
+ }
+#endif
+
Sys_ParseArgs( argc, argv );
Sys_SetBinaryPath( Sys_Dirname( argv[ 0 ] ) );
Sys_SetDefaultInstallPath( DEFAULT_BASEDIR );