diff --git a/src/mesa/drivers/glide/fxdd.c b/src/mesa/drivers/glide/fxdd.c
index 10f6358..0305a27 100644
--- a/src/mesa/drivers/glide/fxdd.c
+++ b/src/mesa/drivers/glide/fxdd.c
@@ -57,6 +57,7 @@
 #include "enums.h"
 #include "extensions.h"
 #include "swrast/swrast.h"
+#include "swrast_setup/swrast_setup.h"
 
 /* These lookup table are used to extract RGB values in [0,255] from
  * 16-bit pixel values.
diff --git a/src/mesa/main/colortab.c b/src/mesa/main/colortab.c
index 18f5076..64ba667 100644
--- a/src/mesa/main/colortab.c
+++ b/src/mesa/main/colortab.c
@@ -1,4 +1,4 @@
-/* $Id: colortab.c,v 1.25 2000/10/31 18:09:44 keithw Exp $ */
+/* $Id: colortab.c,v 1.26 2000/11/10 17:45:15 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -35,6 +35,7 @@
 #include "macros.h"
 #include "mem.h"
 #include "mmath.h"
+#include "swrast/s_span.h" /* XXX SWRAST hack */
 #endif
 
 
diff --git a/src/mesa/main/convolve.c b/src/mesa/main/convolve.c
index 6b24600..f06f240 100644
--- a/src/mesa/main/convolve.c
+++ b/src/mesa/main/convolve.c
@@ -1,4 +1,4 @@
-/* $Id: convolve.c,v 1.9 2000/10/31 18:09:44 keithw Exp $ */
+/* $Id: convolve.c,v 1.10 2000/11/10 17:45:15 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -42,6 +42,7 @@
 #include "context.h"
 #include "image.h"
 #include "types.h"
+#include "swrast/s_span.h" /* XXX SWRAST hack */
 #endif
 
 
diff --git a/src/mesa/swrast/s_context.c b/src/mesa/swrast/s_context.c
index b17b605..ca6b05c 100644
--- a/src/mesa/swrast/s_context.c
+++ b/src/mesa/swrast/s_context.c
@@ -1,4 +1,4 @@
-/* $Id: s_context.c,v 1.2 2000/11/05 18:24:40 keithw Exp $ */
+/* $Id: s_context.c,v 1.3 2000/11/10 17:45:16 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -196,7 +196,7 @@
    swrast->Point( ctx, v0 );
 }
 
-void 
+static void 
 _swrast_validate_blend_func( GLcontext *ctx, GLuint n,
 			     const GLubyte mask[],
 			     GLchan src[][4], 
@@ -211,7 +211,7 @@
 }
 
 
-void 
+static void 
 _swrast_validate_texture_sample( GLcontext *ctx, GLuint texUnit,
 				 const struct gl_texture_object *tObj,
 				 GLuint n,
diff --git a/src/mesa/swrast/s_drawpix.c b/src/mesa/swrast/s_drawpix.c
index 4d119ef..d646bd4 100644
--- a/src/mesa/swrast/s_drawpix.c
+++ b/src/mesa/swrast/s_drawpix.c
@@ -1,4 +1,4 @@
-/* $Id: s_drawpix.c,v 1.2 2000/11/05 18:24:40 keithw Exp $ */
+/* $Id: s_drawpix.c,v 1.3 2000/11/10 17:45:16 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -36,6 +36,7 @@
 #include "pixel.h"
 
 #include "s_context.h"
+#include "s_drawpix.h"
 #include "s_pixeltex.h"
 #include "s_span.h"
 #include "s_stencil.h"
diff --git a/src/mesa/swrast/s_lines.c b/src/mesa/swrast/s_lines.c
index feaf189..c25a385 100644
--- a/src/mesa/swrast/s_lines.c
+++ b/src/mesa/swrast/s_lines.c
@@ -1,4 +1,4 @@
-/* $Id: s_lines.c,v 1.3 2000/11/05 23:18:36 brianp Exp $ */
+/* $Id: s_lines.c,v 1.4 2000/11/10 17:45:16 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -912,6 +912,8 @@
 
 
 #ifdef DEBUG
+extern void
+_mesa_print_line_function(GLcontext *ctx);  /* silence compiler warning */
 void
 _mesa_print_line_function(GLcontext *ctx)
 {
diff --git a/src/mesa/swrast/s_points.c b/src/mesa/swrast/s_points.c
index a4a889e..59fadfb 100644
--- a/src/mesa/swrast/s_points.c
+++ b/src/mesa/swrast/s_points.c
@@ -1,4 +1,4 @@
-/* $Id: s_points.c,v 1.2 2000/11/05 18:24:40 keithw Exp $ */
+/* $Id: s_points.c,v 1.3 2000/11/10 17:45:16 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -852,6 +852,8 @@
 
 
 #ifdef DEBUG
+extern void
+_mesa_print_point_function(GLcontext *ctx);  /* silence compiler warning */
 void
 _mesa_print_point_function(GLcontext *ctx)
 {
diff --git a/src/mesa/swrast/swrast.h b/src/mesa/swrast/swrast.h
index c567d79..8868949 100644
--- a/src/mesa/swrast/swrast.h
+++ b/src/mesa/swrast/swrast.h
@@ -30,6 +30,8 @@
 
 #include "types.h"
 
+
+
 /* The software rasterizer now uses this format for vertices.  Thus a
  * 'RasterSetup' stage or other translation is required between the
  * tnl module and the swrast rasterization functions.  This serves to
@@ -67,33 +69,32 @@
 
 /* These are the public-access functions exported from swrast.  
  */
-void
+extern void
 _swrast_alloc_buffers( GLcontext *ctx );
 
-GLboolean
+extern GLboolean
 _swrast_CreateContext( GLcontext *ctx );
 
-void
+extern void
 _swrast_DestroyContext( GLcontext *ctx );
 
 
 
-
-void 
+extern void 
 _swrast_Bitmap( GLcontext *ctx, 
 		GLint px, GLint py,
 		GLsizei width, GLsizei height,
 		const struct gl_pixelstore_attrib *unpack,
 		const GLubyte *bitmap );
 
-void
+extern void
 _swrast_CopyPixels( GLcontext *ctx, 
 		    GLint srcx, GLint srcy, 
 		    GLint destx, GLint desty, 
 		    GLsizei width, GLsizei height,
 		    GLenum type );
 
-void
+extern void
 _swrast_DrawPixels( GLcontext *ctx, 
 		    GLint x, GLint y,
 		    GLsizei width, GLsizei height,
@@ -101,51 +102,53 @@
 		    const struct gl_pixelstore_attrib *unpack,
 		    const GLvoid *pixels );
 
-void
+extern void
 _swrast_ReadPixels( GLcontext *ctx,
 		    GLint x, GLint y, GLsizei width, GLsizei height,
 		    GLenum format, GLenum type,
 		    const struct gl_pixelstore_attrib *unpack,
 		    GLvoid *pixels );
 
-void 
+extern void 
 _swrast_Clear( GLcontext *ctx, GLbitfield mask, GLboolean all,
 	       GLint x, GLint y, GLint width, GLint height );
 
-void
+extern void
 _swrast_Accum( GLcontext *ctx, GLenum op, 
 	       GLfloat value, GLint xpos, GLint ypos, 
 	       GLint width, GLint height );
 
+
 /* Get a pointer to the stipple counter.
  */
-GLuint *
+extern GLuint *
 _swrast_get_stipple_counter_ref( GLcontext *ctx );
 
 
 /* These will always render the correct point/line/triangle for the
  * current state.
  */
-void
+extern void
 _swrast_Point( GLcontext *ctx, SWvertex *v );
 
-void
+extern void
 _swrast_Line( GLcontext *ctx, SWvertex *v0, SWvertex *v1 );
 
-void
+extern void
 _swrast_Triangle( GLcontext *ctx, SWvertex *v0, SWvertex *v1, SWvertex *v2 );
 
-void
+extern void
 _swrast_Quad( GLcontext *ctx, SWvertex *v0, SWvertex *v1, SWvertex *v2, 
 	      SWvertex *v3);
 
-void 
+extern void 
 _swrast_flush( GLcontext *ctx );
 
 
 /* Tell the software rasterizer about core state changes.
  */
-void
+extern void
 _swrast_InvalidateState( GLcontext *ctx, GLuint new_state );
 
+
 #endif
diff --git a/src/mesa/swrast_setup/ss_context.c b/src/mesa/swrast_setup/ss_context.c
index 4809e6f..a10f22c 100644
--- a/src/mesa/swrast_setup/ss_context.c
+++ b/src/mesa/swrast_setup/ss_context.c
@@ -1,4 +1,4 @@
-/* $Id: ss_context.c,v 1.1 2000/11/05 18:20:18 keithw Exp $ */
+/* $Id: ss_context.c,v 1.2 2000/11/10 17:45:16 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -201,7 +201,7 @@
    }
 }
 
-GLboolean 
+void
 _swsetup_RegisterVB( struct vertex_buffer *VB )
 {
    SSvertexbuffer *ssvb = (SSvertexbuffer *)CALLOC(sizeof(SSvertexbuffer) );
@@ -209,11 +209,11 @@
    ssvb->verts = ALIGN_MALLOC( sizeof(SWvertex) * VB->Size, 32);
    if (!ssvb->verts) {
       FREE(ssvb);
-      return GL_FALSE;
+      /*return GL_FALSE;*/
    }
 
    VB->swsetup_vb = ssvb;
-   return GL_TRUE;
+   /*return GL_TRUE;*/
 }
 
 
diff --git a/src/mesa/swrast_setup/swrast_setup.h b/src/mesa/swrast_setup/swrast_setup.h
index d9b253a..aa32f06 100644
--- a/src/mesa/swrast_setup/swrast_setup.h
+++ b/src/mesa/swrast_setup/swrast_setup.h
@@ -31,39 +31,39 @@
 #ifndef SWRAST_SETUP_H
 #define SWRAST_SETUP_H
 
-GLboolean 
+extern GLboolean 
 _swsetup_CreateContext( GLcontext *ctx );
 
-void 
+extern void 
 _swsetup_DestroyContext( GLcontext *ctx );
 
-GLboolean 
+extern void
 _swsetup_RegisterVB( struct vertex_buffer *VB );
 
-void 
+extern void 
 _swsetup_UnregisterVB( struct vertex_buffer *VB );
 
-void 
+extern void 
 _swsetup_InvalidateState( GLcontext *ctx, GLuint new_state );
 
-void 
+extern void 
 _swsetup_RasterSetup( struct vertex_buffer *VB, 
 		     GLuint start, GLuint end );
 
-void 
+extern void 
 _swsetup_Quad( GLcontext *ctx, GLuint v0, GLuint v1, 
 	       GLuint v2, GLuint v3, GLuint pv );
 
-void 
+extern void 
 _swsetup_Triangle( GLcontext *ctx, GLuint v0, GLuint v1, 
 		   GLuint v2, GLuint pv );
 
 
-void 
+extern void 
 _swsetup_Line( GLcontext *ctx, GLuint v0, GLuint v1, GLuint pv );
 
 
-void 
+extern void 
 _swsetup_Points( GLcontext *ctx, GLuint first, GLuint last );
 
 
