* Microscopic corrections to make things compile on the Cray APP.
* Removed one use of $> in Makefile and warned about others.
  Added configurable lines in Makefile to change CC and AR.
diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c
index 8812ad6..e5bf46a 100644
--- a/Modules/arraymodule.c
+++ b/Modules/arraymodule.c
@@ -31,8 +31,16 @@
 #include "modsupport.h"
 #include "ceval.h"
 
-#ifdef sun
+#ifdef i860
+/* Cray APP doesn't have memmove */
 #define NEED_MEMMOVE
+extern char *memcpy();
+#endif
+
+#ifdef sun
+/* SunOS doesn't have memmove */
+#define NEED_MEMMOVE
+extern char *memcpy();
 #endif
 
 #ifdef NEED_MEMMOVE
diff --git a/Modules/mathmodule.c b/Modules/mathmodule.c
index 1521133..979155e 100644
--- a/Modules/mathmodule.c
+++ b/Modules/mathmodule.c
@@ -35,6 +35,11 @@
 
 #include <math.h>
 
+#ifdef i860
+/* Cray APP has bogus definition of HUGE_VAL in <math.h> */
+#undef HUGE_VAL
+#endif
+
 #ifndef __STDC__
 extern double fmod PROTO((double, double));
 #endif
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index 0e20307..e2328fb 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -82,6 +82,11 @@
 #include <sys/un.h>
 #include <netdb.h>
 
+#ifdef i860
+/* Cray APP doesn't have getpeername() */
+#define NO_GETPEERNAME
+#endif
+
 
 /* Global variable holding the exception type for errors detected
    by this module (but not argument type or memory errors, etc.). */
@@ -594,6 +599,7 @@
 }
 
 
+#ifndef NO_GETPEERNAME
 /* s.getpeername() method */
 
 static object *
@@ -614,6 +620,7 @@
 		return socket_error();
 	return makesockaddr((struct sockaddr *) addrbuf, addrlen);
 }
+#endif
 
 
 /* s.listen(n) method */
@@ -809,7 +816,9 @@
 	{"connect",	sock_connect},
 	{"fileno",	sock_fileno},
 	{"getsockname",	sock_getsockname},
+#ifndef NO_GETPEERNAME
 	{"getpeername",	sock_getpeername},
+#endif
 	{"listen",	sock_listen},
 	{"makefile",	sock_makefile},
 	{"recv",	sock_recv},
diff --git a/Objects/floatobject.c b/Objects/floatobject.c
index 8533e0e..6a95ebf 100644
--- a/Objects/floatobject.c
+++ b/Objects/floatobject.c
@@ -38,6 +38,11 @@
 #include <ctype.h>
 #include <math.h>
 
+#ifdef i860
+/* Cray APP has bogus definition of HUGE_VAL in <math.h> */
+#undef HUGE_VAL
+#endif
+
 #ifdef HUGE_VAL
 #define CHECK(x) if (errno != 0) ; \
 	else if (-HUGE_VAL <= (x) && (x) <= HUGE_VAL) ; \
@@ -170,6 +175,7 @@
 	}
 	else {
 		fractpart = frexp(fractpart, &expo);
+		fractpart = fractpart*4294967296.0; /* 2**32 */
 		x = (long) (intpart + fractpart) ^ expo; /* Rather arbitrary */
 	}
 	if (x == -1)
diff --git a/Objects/intobject.c b/Objects/intobject.c
index 6806f0c..3021873 100644
--- a/Objects/intobject.c
+++ b/Objects/intobject.c
@@ -426,7 +426,7 @@
 	intobject *v;
 {
 	INCREF(v);
-	return v;
+	return (object *)v;
 }
 
 static object *
@@ -512,5 +512,5 @@
 	&int_as_number,	/*tp_as_number*/
 	0,		/*tp_as_sequence*/
 	0,		/*tp_as_mapping*/
-	&int_hash,	/*tp_hash*/
+	int_hash,	/*tp_hash*/
 };
diff --git a/Python/ceval.c b/Python/ceval.c
index cdd71a8..1206570 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -125,9 +125,8 @@
 		release_lock(interpreter_lock);
 		return res;
 	}
-	else
-		return NULL;
 #endif
+	return NULL;
 }
 
 void