From 9b6e4553e45720183eee347fe0a8d03770ff4e6d Mon Sep 17 00:00:00 2001
From: Tim Angus <tim@ngus.net>
Date: Thu, 13 Sep 2007 14:05:34 +0000
Subject: * Merge of ioq3-r1178

---
 src/renderer/qgl.h      |  11 +--
 src/renderer/tr_init.c  |   8 +-
 src/renderer/tr_local.h |   2 -
 src/renderer/tr_types.h |   2 +-
 src/sdl/sdl_glimp.c     |  20 ++---
 src/sys/con_win32.c     | 216 +++++++++++++++++++++++++++++++++++++++++++++++-
 src/tools/asm/Makefile  |  43 ----------
 src/tools/lcc/Makefile  | 163 ------------------------------------
 8 files changed, 234 insertions(+), 231 deletions(-)
 delete mode 100644 src/tools/asm/Makefile
 delete mode 100644 src/tools/lcc/Makefile

(limited to 'src')

diff --git a/src/renderer/qgl.h b/src/renderer/qgl.h
index 8c92eb36..f83eaf31 100644
--- a/src/renderer/qgl.h
+++ b/src/renderer/qgl.h
@@ -29,12 +29,13 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
 #include "SDL_opengl.h"
 
-extern PFNGLMULTITEXCOORD2FARBPROC qglMultiTexCoord2fARB;
-extern PFNGLACTIVETEXTUREARBPROC qglActiveTextureARB;
-extern PFNGLCLIENTACTIVETEXTUREARBPROC qglClientActiveTextureARB;
+extern void (APIENTRYP qglActiveTextureARB) (GLenum texture);
+extern void (APIENTRYP qglClientActiveTextureARB) (GLenum texture);
+extern void (APIENTRYP qglMultiTexCoord2fARB) (GLenum target, GLfloat s, GLfloat t);
+
+extern void (APIENTRYP qglLockArraysEXT) (GLint first, GLsizei count);
+extern void (APIENTRYP qglUnlockArraysEXT) (void);
 
-extern PFNGLLOCKARRAYSEXTPROC qglLockArraysEXT;
-extern PFNGLUNLOCKARRAYSEXTPROC qglUnlockArraysEXT;
 
 //===========================================================================
 
diff --git a/src/renderer/tr_init.c b/src/renderer/tr_init.c
index d8e35ff7..1f3d19dc 100644
--- a/src/renderer/tr_init.c
+++ b/src/renderer/tr_init.c
@@ -81,7 +81,6 @@ cvar_t	*r_nocurves;
 cvar_t	*r_allowExtensions;
 
 cvar_t	*r_ext_compressed_textures;
-cvar_t	*r_ext_gamma_control;
 cvar_t	*r_ext_multitexture;
 cvar_t	*r_ext_compiled_vertex_array;
 cvar_t	*r_ext_texture_env_add;
@@ -889,7 +888,6 @@ GfxInfo_f
 */
 void GfxInfo_f( void ) 
 {
-	cvar_t *sys_cpustring = ri.Cvar_Get( "sys_cpustring", "", 0 );
 	const char *enablestrings[] =
 	{
 		"disabled",
@@ -906,7 +904,7 @@ void GfxInfo_f( void )
 	ri.Printf( PRINT_ALL, "GL_VERSION: %s\n", glConfig.version_string );
 	ri.Printf( PRINT_ALL, "GL_EXTENSIONS: %s\n", glConfig.extensions_string );
 	ri.Printf( PRINT_ALL, "GL_MAX_TEXTURE_SIZE: %d\n", glConfig.maxTextureSize );
-	ri.Printf( PRINT_ALL, "GL_MAX_ACTIVE_TEXTURES_ARB: %d\n", glConfig.maxActiveTextures );
+	ri.Printf( PRINT_ALL, "GL_MAX_TEXTURE_UNITS_ARB: %d\n", glConfig.numTextureUnits );
 	ri.Printf( PRINT_ALL, "\nPIXELFORMAT: color(%d-bits) Z(%d-bit) stencil(%d-bits)\n", glConfig.colorBits, glConfig.depthBits, glConfig.stencilBits );
 	ri.Printf( PRINT_ALL, "MODE: %d, %d x %d %s hz:", r_mode->integer, glConfig.vidWidth, glConfig.vidHeight, fsstrings[r_fullscreen->integer == 1] );
 	if ( glConfig.displayFrequency )
@@ -925,7 +923,6 @@ void GfxInfo_f( void )
 	{
 		ri.Printf( PRINT_ALL, "GAMMA: software w/ %d overbright bits\n", tr.overbrightBits );
 	}
-	ri.Printf( PRINT_ALL, "CPU: %s\n", sys_cpustring->string );
 
 	// rendering primitives
 	{
@@ -991,10 +988,9 @@ void R_Register( void )
 	//
 	r_allowExtensions = ri.Cvar_Get( "r_allowExtensions", "1", CVAR_ARCHIVE | CVAR_LATCH );
 	r_ext_compressed_textures = ri.Cvar_Get( "r_ext_compressed_textures", "0", CVAR_ARCHIVE | CVAR_LATCH );
-	r_ext_gamma_control = ri.Cvar_Get( "r_ext_gamma_control", "1", CVAR_ARCHIVE | CVAR_LATCH );
 	r_ext_multitexture = ri.Cvar_Get( "r_ext_multitexture", "1", CVAR_ARCHIVE | CVAR_LATCH );
 	r_ext_compiled_vertex_array = ri.Cvar_Get( "r_ext_compiled_vertex_array", "1", CVAR_ARCHIVE | CVAR_LATCH);
-	r_ext_texture_env_add = ri.Cvar_Get( "r_ext_texture_env_add", "0", CVAR_ARCHIVE | CVAR_LATCH);
+	r_ext_texture_env_add = ri.Cvar_Get( "r_ext_texture_env_add", "1", CVAR_ARCHIVE | CVAR_LATCH);
 
 	r_picmip = ri.Cvar_Get ("r_picmip", GENERIC_HW_R_PICMIP_DEFAULT,
 			CVAR_ARCHIVE | CVAR_LATCH );
diff --git a/src/renderer/tr_local.h b/src/renderer/tr_local.h
index 7c694759..a507e8a7 100644
--- a/src/renderer/tr_local.h
+++ b/src/renderer/tr_local.h
@@ -1035,8 +1035,6 @@ extern cvar_t	*r_ignorehwgamma;		// overrides hardware gamma capabilities
 
 extern cvar_t	*r_allowExtensions;				// global enable/disable of OpenGL extensions
 extern cvar_t	*r_ext_compressed_textures;		// these control use of specific extensions
-extern cvar_t	*r_ext_gamma_control;
-extern cvar_t	*r_ext_texenv_op;
 extern cvar_t	*r_ext_multitexture;
 extern cvar_t	*r_ext_compiled_vertex_array;
 extern cvar_t	*r_ext_texture_env_add;
diff --git a/src/renderer/tr_types.h b/src/renderer/tr_types.h
index 3922f8ff..2d7c66d3 100644
--- a/src/renderer/tr_types.h
+++ b/src/renderer/tr_types.h
@@ -176,7 +176,7 @@ typedef struct {
 	char					extensions_string[BIG_INFO_STRING];
 
 	int						maxTextureSize;			// queried from GL
-	int						maxActiveTextures;		// multitexture ability
+	int						numTextureUnits;		// multitexture ability
 
 	int						colorBits, depthBits, stencilBits;
 
diff --git a/src/sdl/sdl_glimp.c b/src/sdl/sdl_glimp.c
index 07b80a81..a980b0ed 100644
--- a/src/sdl/sdl_glimp.c
+++ b/src/sdl/sdl_glimp.c
@@ -70,12 +70,12 @@ static SDL_Surface *screen = NULL;
 
 cvar_t *r_allowSoftwareGL; // Don't abort out if a hardware visual can't be obtained
 
-PFNGLMULTITEXCOORD2FARBPROC qglMultiTexCoord2fARB;
-PFNGLACTIVETEXTUREARBPROC qglActiveTextureARB;
-PFNGLCLIENTACTIVETEXTUREARBPROC qglClientActiveTextureARB;
+void (APIENTRYP qglActiveTextureARB) (GLenum texture);
+void (APIENTRYP qglClientActiveTextureARB) (GLenum texture);
+void (APIENTRYP qglMultiTexCoord2fARB) (GLenum target, GLfloat s, GLfloat t);
 
-PFNGLLOCKARRAYSEXTPROC qglLockArraysEXT;
-PFNGLUNLOCKARRAYSEXTPROC qglUnlockArraysEXT;
+void (APIENTRYP qglLockArraysEXT) (GLint first, GLsizei count);
+void (APIENTRYP qglUnlockArraysEXT) (void);
 
 /*
 ===============
@@ -89,8 +89,8 @@ void GLimp_Shutdown( void )
 	SDL_QuitSubSystem( SDL_INIT_VIDEO );
 	screen = NULL;
 
-	memset( &glConfig, 0, sizeof( glConfig ) );
-	memset( &glState, 0, sizeof( glState ) );
+	Com_Memset( &glConfig, 0, sizeof( glConfig ) );
+	Com_Memset( &glState, 0, sizeof( glState ) );
 }
 
 /*
@@ -396,8 +396,8 @@ static void GLimp_InitExtensions( void )
 			{
 				GLint glint = 0;
 				qglGetIntegerv( GL_MAX_TEXTURE_UNITS_ARB, &glint );
-				glConfig.maxActiveTextures = (int) glint;
-				if ( glConfig.maxActiveTextures > 1 )
+				glConfig.numTextureUnits = (int) glint;
+				if ( glConfig.numTextureUnits > 1 )
 				{
 					ri.Printf( PRINT_ALL, "...using GL_ARB_multitexture\n" );
 				}
@@ -490,7 +490,7 @@ void GLimp_Init( void )
 	{
 		if( r_mode->integer != R_MODE_FALLBACK )
 		{
-			ri.Printf( PRINT_ALL, "Setting r_mode %d failed, falling back on r_mode %d",
+			ri.Printf( PRINT_ALL, "Setting r_mode %d failed, falling back on r_mode %d\n",
 					r_mode->integer, R_MODE_FALLBACK );
 			if( !GLimp_StartDriverAndSetMode( R_MODE_FALLBACK, r_fullscreen->integer ) )
 				success = qfalse;
diff --git a/src/sys/con_win32.c b/src/sys/con_win32.c
index ea3cfb7c..55020e26 100644
--- a/src/sys/con_win32.c
+++ b/src/sys/con_win32.c
@@ -22,6 +22,21 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
 #include "../qcommon/q_shared.h"
 #include "../qcommon/qcommon.h"
+#include "windows.h"
+
+
+#define QCONSOLE_THEME FOREGROUND_RED | \
+                       BACKGROUND_RED | \
+                       BACKGROUND_GREEN | \
+                       BACKGROUND_BLUE
+
+#define QCONSOLE_INPUT_RECORDS 1024
+
+// used to track key input
+static int qconsole_chars = 0;
+
+// used to restore original color theme 
+static int qconsole_orig_attrib;
 
 /*
 ==================
@@ -48,6 +63,15 @@ CON_Shutdown
 */
 void CON_Shutdown( void )
 {
+  HANDLE hout;
+  COORD screen = { 0, 0 };
+  DWORD written;
+
+  hout = GetStdHandle( STD_OUTPUT_HANDLE );
+
+  SetConsoleTextAttribute( hout, qconsole_orig_attrib );
+  FillConsoleOutputAttribute( hout, qconsole_orig_attrib, 63999,
+                              screen, &written ); 
 }
 
 /*
@@ -57,6 +81,34 @@ CON_Init
 */
 void CON_Init( void )
 {
+  HANDLE hout;
+  COORD screen = { 0, 0 };
+  DWORD written, read;
+  CONSOLE_SCREEN_BUFFER_INFO binfo;
+  SMALL_RECT rect;
+  WORD oldattrib;
+
+  hout = GetStdHandle( STD_OUTPUT_HANDLE );
+
+  // remember original color theme
+  ReadConsoleOutputAttribute( hout, &oldattrib, 1, screen, &read );
+  qconsole_orig_attrib = oldattrib;
+  
+  SetConsoleTitle("ioquake3 Dedicated Server Console");
+
+  SetConsoleTextAttribute( hout, QCONSOLE_THEME );
+  FillConsoleOutputAttribute( hout, QCONSOLE_THEME, 63999, screen, &written ); 
+  
+  // adjust console scroll to match up with cursor position  
+  GetConsoleScreenBufferInfo( hout, &binfo );
+  rect.Top = binfo.srWindow.Top;
+  rect.Left = binfo.srWindow.Left;
+  rect.Bottom = binfo.srWindow.Bottom;
+  rect.Right = binfo.srWindow.Right;
+  rect.Top += ( binfo.dwCursorPosition.Y - binfo.srWindow.Bottom ); 
+  rect.Bottom = binfo.dwCursorPosition.Y; 
+  SetConsoleWindowInfo( hout, TRUE, &rect );
+
 }
 
 /*
@@ -66,5 +118,167 @@ CON_ConsoleInput
 */
 char *CON_ConsoleInput( void )
 {
-  return NULL;
+  HANDLE hin, hout;
+  INPUT_RECORD buff[ QCONSOLE_INPUT_RECORDS ];
+  DWORD count = 0;
+  int i;
+  static char input[ 1024 ] = { "" };
+  int inputlen;
+  int newlinepos = -1;
+  CHAR_INFO line[ QCONSOLE_INPUT_RECORDS ];
+  int linelen = 0;
+
+  inputlen = 0;
+  input[ 0 ] = '\0';
+
+  hin = GetStdHandle( STD_INPUT_HANDLE );
+  if( hin == INVALID_HANDLE_VALUE )
+    return NULL;
+  hout = GetStdHandle( STD_OUTPUT_HANDLE );
+  if( hout == INVALID_HANDLE_VALUE )
+    return NULL;
+
+  if( !PeekConsoleInput( hin, buff, QCONSOLE_INPUT_RECORDS, &count ) )
+    return NULL;
+
+  // if we have overflowed, start dropping oldest input events
+  if( count == QCONSOLE_INPUT_RECORDS )
+  {
+    ReadConsoleInput( hin, buff, 1, &count );
+    return NULL;
+  } 
+
+  for( i = 0; i < count; i++ )
+  {
+    if( buff[ i ].EventType == KEY_EVENT && buff[ i ].Event.KeyEvent.bKeyDown ) 
+    {
+      if( buff[ i ].Event.KeyEvent.wVirtualKeyCode == VK_RETURN )
+      {
+        newlinepos = i;
+        break;
+      }
+
+      if( linelen < QCONSOLE_INPUT_RECORDS &&
+          buff[ i ].Event.KeyEvent.uChar.AsciiChar )
+      {
+        if( buff[ i ].Event.KeyEvent.wVirtualKeyCode == VK_BACK )
+        {
+          if( linelen > 0 )
+            linelen--;
+            
+        }
+        else
+        {
+          line[ linelen ].Attributes =  QCONSOLE_THEME;
+          line[ linelen++ ].Char.AsciiChar =
+            buff[ i ].Event.KeyEvent.uChar.AsciiChar;
+        }
+      }
+    }
+  }
+
+  // provide visual feedback for incomplete commands
+  if( linelen != qconsole_chars )
+  {
+    CONSOLE_SCREEN_BUFFER_INFO binfo;
+    COORD writeSize = { QCONSOLE_INPUT_RECORDS, 1 };
+    COORD writePos = { 0, 0 };
+    SMALL_RECT writeArea = { 0, 0, 0, 0 };
+    int i;
+
+    // keep track of this so we don't need to re-write to console every frame
+    qconsole_chars = linelen;
+
+    GetConsoleScreenBufferInfo( hout, &binfo );
+
+    // adjust scrolling to cursor when typing
+    if( binfo.dwCursorPosition.Y > binfo.srWindow.Bottom )
+    {
+      SMALL_RECT rect;
+
+      rect.Top = binfo.srWindow.Top;
+      rect.Left = binfo.srWindow.Left;
+      rect.Bottom = binfo.srWindow.Bottom;
+      rect.Right = binfo.srWindow.Right;
+
+      rect.Top += ( binfo.dwCursorPosition.Y - binfo.srWindow.Bottom ); 
+      rect.Bottom = binfo.dwCursorPosition.Y; 
+      
+      SetConsoleWindowInfo( hout, TRUE, &rect );
+      GetConsoleScreenBufferInfo( hout, &binfo );
+    }
+    
+    writeArea.Left = 0;
+    writeArea.Top = binfo.srWindow.Bottom; 
+    writeArea.Bottom = binfo.srWindow.Bottom; 
+    writeArea.Right = QCONSOLE_INPUT_RECORDS;
+
+    // pad line with ' ' to handle VK_BACK
+    for( i = linelen; i < QCONSOLE_INPUT_RECORDS; i++ )
+    {
+      line[ i ].Char.AsciiChar = ' '; 
+      line[ i ].Attributes =  QCONSOLE_THEME;
+    }
+
+    if( linelen > binfo.srWindow.Right )
+    {
+      WriteConsoleOutput( hout, line + (linelen - binfo.srWindow.Right ),
+                          writeSize, writePos, &writeArea );
+    }
+    else
+    {
+      WriteConsoleOutput( hout, line, writeSize, writePos, &writeArea );
+    }
+
+    if( binfo.dwCursorPosition.X != linelen )
+    {
+      COORD cursorPos = { 0, 0 };
+
+      cursorPos.X = linelen;
+      cursorPos.Y = binfo.srWindow.Bottom;
+      SetConsoleCursorPosition( hout, cursorPos );
+    }
+  }
+
+  // don't touch the input buffer if this is an incomplete command
+  if( newlinepos < 0)
+  {
+    return NULL;
+  }
+  else
+  {
+    // add a newline
+    COORD cursorPos = { 0, 0 };
+    CONSOLE_SCREEN_BUFFER_INFO binfo;
+
+    GetConsoleScreenBufferInfo( hout, &binfo );
+    cursorPos.Y = binfo.srWindow.Bottom + 1;
+    SetConsoleCursorPosition( hout, cursorPos );
+  }
+
+
+  if( !ReadConsoleInput( hin, buff, newlinepos+1, &count ) )
+    return NULL;
+
+  for( i = 0; i < count; i++ )
+  {
+    if( buff[ i ].EventType == KEY_EVENT && buff[ i ].Event.KeyEvent.bKeyDown ) 
+    {
+      if( buff[ i ].Event.KeyEvent.wVirtualKeyCode == VK_BACK )
+      {
+        if( inputlen > 0 )
+          input[ --inputlen ] = '\0';
+        continue;
+      }
+      if( inputlen < ( sizeof( input ) - 1 ) &&
+          buff[ i ].Event.KeyEvent.uChar.AsciiChar )
+      {
+        input[ inputlen++ ] = buff[ i ].Event.KeyEvent.uChar.AsciiChar;
+        input[ inputlen ] = '\0'; 
+      }
+    }
+  }
+  if( !inputlen )
+    return NULL;
+  return input;
 }
diff --git a/src/tools/asm/Makefile b/src/tools/asm/Makefile
deleted file mode 100644
index 52f1060d..00000000
--- a/src/tools/asm/Makefile
+++ /dev/null
@@ -1,43 +0,0 @@
-# yeah, couldn't do more simple really
-
-ifeq ($(PLATFORM),mingw32)
-  BINEXT=.exe
-else
-  BINEXT=
-endif
-
-ifeq ($(PLATFORM),sunos)
-  INSTALL=ginstall
-else
-  INSTALL=install
-endif
-
-CC=gcc
-Q3ASM_CFLAGS=-O2 -Wall -Werror -fno-strict-aliasing
-
-ifeq ($(PLATFORM),darwin)
-  LCC_CFLAGS += -DMACOS_X=1
-endif
-
-ifndef USE_CCACHE
-  USE_CCACHE=0
-endif
-
-ifeq ($(USE_CCACHE),1)
-  CC := ccache $(CC)
-  CXX := ccache $(CXX)
-endif
-
-default: q3asm
-
-q3asm: q3asm.c cmdlib.c
-	$(CC) $(Q3ASM_CFLAGS) -o $@ $^
-
-clean:
-	rm -f q3asm *~ *.o
-
-install: default
-	$(INSTALL) -s -m 0755 q3asm$(BINEXT) ../
-
-uninstall:
-	rm -f ../q3asm$(BINEXT)
diff --git a/src/tools/lcc/Makefile b/src/tools/lcc/Makefile
deleted file mode 100644
index 8dd5fb2b..00000000
--- a/src/tools/lcc/Makefile
+++ /dev/null
@@ -1,163 +0,0 @@
-TEMPDIR=/tmp
-A=.a
-O=.o
-
-ifeq ($(PLATFORM),mingw32)
-  E=.exe
-else
-  E=
-endif
-
-CC=gcc
-LCC_CFLAGS=-O2 -Wall -fno-strict-aliasing -MMD
-LDFLAGS=
-LD=gcc
-AR=ar
-ARFLAGS=cru
-RANLIB=ranlib
-DIFF=diff
-RM=rm -f
-RMDIR=rmdir
-BUILDDIR=build-$(PLATFORM)-$(ARCH)
-BD=$(BUILDDIR)/
-
-ifeq ($(USE_CCACHE),1)
-  CC := ccache $(CC)
-endif
-
-# Need MACOS_X defined or this won't build.
-ifeq ($(PLATFORM),darwin)
-  LCC_CFLAGS += -DMACOS_X
-endif
-
-ifeq ($(PLATFORM),sunos)
-  INSTALL=ginstall
-else
-  INSTALL=install
-endif
-
-all: q3rcc lburg q3cpp q3lcc
-
-q3rcc: makedirs $(BD)q3rcc$(E)
-lburg: makedirs $(BD)lburg$(E)
-q3cpp: makedirs $(BD)q3cpp$(E)
-q3lcc: makedirs $(BD)q3lcc$(E)
-
-makedirs:
-	@if [ ! -d $(BD) ];then mkdir $(BD);fi
-	@if [ ! -d $(BD)/etc ];then mkdir $(BD)/etc;fi
-	@if [ ! -d $(BD)/rcc ];then mkdir $(BD)/rcc;fi
-	@if [ ! -d $(BD)/cpp ];then mkdir $(BD)/cpp;fi
-	@if [ ! -d $(BD)/lburg ];then mkdir $(BD)/lburg;fi
-
-# ===== RCC =====
-RCCOBJS= \
-	$(BD)rcc/alloc$(O) \
-	$(BD)rcc/bind$(O) \
-	$(BD)rcc/bytecode$(O) \
-	$(BD)rcc/dag$(O) \
-	$(BD)rcc/dagcheck$(O) \
-	$(BD)rcc/decl$(O) \
-	$(BD)rcc/enode$(O) \
-	$(BD)rcc/error$(O) \
-	$(BD)rcc/event$(O) \
-	$(BD)rcc/expr$(O) \
-	$(BD)rcc/gen$(O) \
-	$(BD)rcc/init$(O) \
-	$(BD)rcc/inits$(O) \
-	$(BD)rcc/input$(O) \
-	$(BD)rcc/lex$(O) \
-	$(BD)rcc/list$(O) \
-	$(BD)rcc/main$(O) \
-	$(BD)rcc/null$(O) \
-	$(BD)rcc/output$(O) \
-	$(BD)rcc/prof$(O) \
-	$(BD)rcc/profio$(O) \
-	$(BD)rcc/simp$(O) \
-	$(BD)rcc/stmt$(O) \
-	$(BD)rcc/string$(O) \
-	$(BD)rcc/sym$(O) \
-	$(BD)rcc/symbolic$(O) \
-	$(BD)rcc/trace$(O) \
-	$(BD)rcc/tree$(O) \
-	$(BD)rcc/types$(O)
-
-$(BD)q3rcc$(E): $(RCCOBJS)
-	$(LD) $(LDFLAGS) -o $@ $(RCCOBJS)
-
-$(BD)rcc/%$(O): src/%.c
-	$(CC) $(LCC_CFLAGS) -c -Isrc -o $@ $<
-
-$(BD)rcc/dagcheck$(O): $(BD)rcc/dagcheck.c
-	$(CC) $(LCC_CFLAGS) -Wno-unused -c -Isrc -o $@ $<
-
-$(BD)rcc/dagcheck.c: $(BD)lburg/lburg$(E) src/dagcheck.md
-	$(BD)lburg/lburg$(E) src/dagcheck.md $@
-
-
-# ===== LBURG =====
-LBURGOBJS= \
-	$(BD)lburg/lburg$(O) \
-	$(BD)lburg/gram$(O)
-
-$(BD)lburg/lburg$(E): $(LBURGOBJS)
-	$(LD) $(LDFLAGS) -o $@ $(LBURGOBJS)
-
-$(BD)lburg/%$(O): lburg/%.c
-	$(CC) $(LCC_CFLAGS) -c -Ilburg -o $@ $<
-
-
-# ===== CPP =====
-CPPOBJS= \
-	$(BD)cpp/cpp$(O) \
-	$(BD)cpp/lex$(O) \
-	$(BD)cpp/nlist$(O) \
-	$(BD)cpp/tokens$(O) \
-	$(BD)cpp/macro$(O) \
-	$(BD)cpp/eval$(O) \
-	$(BD)cpp/include$(O) \
-	$(BD)cpp/hideset$(O) \
-	$(BD)cpp/getopt$(O) \
-	$(BD)cpp/unix$(O)
-
-$(BD)q3cpp$(E): $(CPPOBJS)
-	$(LD) $(LDFLAGS) -o $@ $(CPPOBJS)
-
-$(BD)cpp/%$(O): cpp/%.c
-	$(CC) $(LCC_CFLAGS) -c -Icpp -o $@ $<
-
-
-# ===== LCC =====
-LCCOBJS= \
-	$(BD)etc/lcc$(O) \
-	$(BD)etc/bytecode$(O)
-
-$(BD)q3lcc$(E): $(LCCOBJS)
-	$(LD) $(LDFLAGS) -o $@ $(LCCOBJS)
-
-$(BD)etc/%$(O): etc/%.c
-	$(CC) $(LCC_CFLAGS) -DTEMPDIR=\"$(TEMPDIR)\" -DSYSTEM=\"\" -c -Isrc -o $@ $<
-
-
-install: q3lcc q3cpp q3rcc
-	$(INSTALL) -s -m 0755 $(BD)q3lcc$(E) ../
-	$(INSTALL) -s -m 0755 $(BD)q3cpp$(E) ../
-	$(INSTALL) -s -m 0755 $(BD)q3rcc$(E) ../
-
-uninstall:
-	-$(RM) ../q3lcc$(E)
-	-$(RM) ../q3cpp$(E)
-	-$(RM) ../q3rcc$(E)
-
-clean:
-	if [ -d $(BD) ];then (find $(BD) -name '*.d' -exec rm {} \;)fi
-	$(RM) $(RCCOBJS) $(LBURGOBJS) $(CPPOBJS) $(LCCOBJS)
-	$(RM) $(BD)rcc/dagcheck.c $(BD)lburg/lburg$(E)
-	$(RM) $(BD)q3lcc$(E) $(BD)q3cpp$(E) $(BD)q3rcc$(E)
-	$(RM) -r $(BD)
-
-D_FILES=$(shell find . -name '*.d')
-
-ifneq ($(strip $(D_FILES)),)
-  include $(D_FILES)
-endif
-- 
cgit