Port Mesa to build on a P64 platform (e.g., Win64).  P64 platforms
use 64-bit pointers and 32-bit longs.  So, operations like casting pointers
to unsigned long and back to pointer won't work.  glheader.h now
includes files to define uintptr_t, which should instead be used for
this sort of operation.  It is an integer type that is the same size
as a pointer.
diff --git a/src/mesa/math/m_translate.c b/src/mesa/math/m_translate.c
index 14beabb..1bce0f3 100644
--- a/src/mesa/math/m_translate.c
+++ b/src/mesa/math/m_translate.c
@@ -530,7 +530,7 @@
    const GLubyte *f = (GLubyte *) Ptr + SRC_START * stride;
    GLuint i;
 
-   if (((((long) f | (long) stride)) & 3L) == 0L) {
+   if (((((uintptr_t) f | (uintptr_t) stride)) & 3L) == 0L) {
       /* Aligned.
        */
       for (i = DST_START ; i < n ; i++, f += stride) {