--- a/unix/Make-arch
+++ b/unix/Make-arch
@@ -7,7 +7,8 @@
 
 # Some machines don't have/need ranlib, in their case, use 'touch'
 # this should be overridden by arch specific configuration lines below
-RANLIB= touch
+# RANLIB=ranlib
+# Do not override Sage's RANLIB environment variable
 
 # MPI path setup, probably shouldn't need to be changed.
 MPIINC=$(MPIDIR)/include
@@ -23,7 +24,8 @@ default:
 	@echo "--------------------------------------------------------------"
 	@echo "              Parallel Versions        "
 	@echo ""
-	@echo "             aix-thr - IBM AIX 5.x      POSIX Threads         "
+	@echo "     aix-generic-thr - IBM AIX POSIX Threads. Generic compiler"
+	@echo "             aix-thr - IBM AIX 5.x POSIX Threads. IBM compiler "
 	@echo "          aix-64-thr - IBM AIX 5.x      POSIX Threads, 64-bit "
 	@echo "             aix-mpi - IBM AIX 5.x (SP) MPI                   "
 	@echo "        asci-red-mpi - Intel ASCI Red   MPI                   "
@@ -32,11 +34,12 @@ default:
 	@echo "        cray-t3e-mpi - Cray T3E         MPI                   "
 	@echo "        cray-xt3-mpi - Cray XT3         MPI                   "
 	@echo "  compaq-alphasc-mpi - Lemieux at PSC   MPI                   "
+	@echo "    hpux-generic-thr - HP/UX POSIX Threads. Generic compiler  "
 	@echo "            hpux-thr - HP/UX 11.x       POSIX Threads         "
 	@echo "       hpux-ia64-thr - HP-UX IA-64, HP C, POSIX Threads       "
 	@echo "           irix6-thr - SGI IRIX 6.5.x   POSIX Threads         "
 	@echo "        irix6-64-thr - SGI IRIX 6.5.x   POSIX Threads, 64-bit "
-	@echo "   linux-beowulf-mpi - Scyld Linux MPI                        " 
+	@echo "   linux-beowulf-mpi - Scyld Linux MPI                        "
 	@echo " linux-alpha-ccc-qsw - Linux Alpha, Compaq C, MPI, QSWnet     "
 	@echo "           linux-lam - Linux            MPI (OSC LAM)         "
 	@echo "        linux-lam-64 - Linux AMD64/EM64T, MPI, 64-bit         "
@@ -48,13 +51,14 @@ default:
 	@echo "linux-ia64-thr-sgicc - Linux IA-64, SGI Pro64 Compilers       "
 	@echo "          macosx-thr - MacOS X PowerPC, POSIX Threads         "
 	@echo "      macosx-x86-thr - MacOS X Intel x86, POSIX Threads       "
-	@echo "   solaris-ultra-hpc - Sun Solaris 9/10 ClusterTools 4.0 MPI  " 
-	@echo "         solaris-mpi - Sun Solaris 9/10 MPI (MPICH)           " 
-	@echo "         solaris-lam - Sun Solaris 9/10 MPI (OSC LAM)         " 
-	@echo "         solaris-thr - Sun Solaris 9/10 UI/Sun Threads        " 
-	@echo "   solaris-ultra-thr - Sun Solaris 9/10 UI/Sun Threads, US-1/2" 
-	@echo "  solaris-ultra3-thr - Sun Solaris 9/10 UI/Sun Threads, US-III" 
-	@echo "      solaris-64-thr - Sun Solaris 9/10 UI/Sun Threads, 64-bit" 
+	@echo "   solaris-ultra-hpc - Sun Solaris 9/10 ClusterTools 4.0 MPI  "
+	@echo "         solaris-mpi - Sun Solaris 9/10 MPI (MPICH)           "
+	@echo "         solaris-lam - Sun Solaris 9/10 MPI (OSC LAM)         "
+	@echo "         solaris-thr - Sun Solaris 9/10 UI/Sun Threads        "
+	@echo "solaris-pthreads-gcc-64-bit - 64-bit (should work on SPARC or x64)"
+	@echo "   solaris-ultra-thr - Sun Solaris 9/10 UI/Sun Threads, US-1/2"
+	@echo "  solaris-ultra3-thr - Sun Solaris 9/10 UI/Sun Threads, US-III"
+	@echo "      solaris-64-thr - Sun Solaris 9/10 UI/Sun Threads, 64-bit"
 	@echo "--------------------------------------------------------------"
 	@echo "            Hybrid Parallel Versions                          "
 	@echo ""
@@ -63,9 +67,11 @@ default:
 	@echo "--------------------------------------------------------------"
 	@echo "              Sequential Versions                             "
 	@echo ""
-	@echo "              aix - IBM AIX 5.x                             "
+	@echo "              aix - IBM 5.x using IBM's compiler            "
+	@echo "      aix-generic - IBM AIX Generic compiler (gcc etc)      "
 	@echo "              bsd - OpenBSD/FreeBSD/NetBSD                  "
-	@echo "             hpux - HP/UX 11.x                              "
+	@echo "             hpux - HP/UX 11.x  HP's compiler               "
+	@echo "     hpux-generic - HP/UX 11.x  Generic compiler (gcc etc)  "
 	@echo "            irix6 - SGI Irix 6.x                            "
 	@echo "            linux - Linux                                   "
 	@echo "         linux-64 - Linux, AMD64/EM64T, GCC 3.x, 64-bit     "
@@ -102,7 +108,7 @@ default:
 	@echo "Consult the README file in this directory for further info. "
 
 ##
-## Intel ASCI Red (Janus) using MPI.  
+## Intel ASCI Red (Janus) using MPI.
 ## No pthreads on ASCI Red yet.  I didn't bother with the cop() stuff
 ##
 asci-red-mpi:
@@ -118,7 +124,7 @@ asci-red-mpi:
 
 ##
 ## IBM Blue Gene/L Parallel Supercomputer
-## 
+##
 ## NOTE: strip breaks bluegene executables, they are dynamically re-linked
 ##       at runtime, so we must use /bin/true rather than strip
 ##
@@ -137,7 +143,7 @@ bluegene-mpi:
 ## Cray Parallel Vector Processor Machines Using Threads
 ##
 ## Tested on J90s, but should work on almost any of the Cray PVP systems.
-## Note: This code is not currently vectorized, and you may be better 
+## Note: This code is not currently vectorized, and you may be better
 ##       off running on a fast workstation, or even better, on a T3E!!!
 ##
 cray-thr:
@@ -228,7 +234,7 @@ cray-xt3-mpi:
 ##
 ## Architecture flags for the Intel Paragon XP/S Supercomputer using MPI
 ## for message passing.  NX is no longer supported by this software.
-## Configurations supporting systems with MP-3 nodes are listed, 
+## Configurations supporting systems with MP-3 nodes are listed,
 ## Concurrent I/O is used by default.
 ##
 
@@ -264,8 +270,8 @@ paragon-mpi:
 
 
 ##
-## Architecture flags for the Intel iPSC/860 Multicomputer using MPI 
-## for message passing.  NX is no longer supported by this software. 
+## Architecture flags for the Intel iPSC/860 Multicomputer using MPI
+## for message passing.  NX is no longer supported by this software.
 ## Tested with the mpich distribution from Argonne National Labs
 ##
 
@@ -277,7 +283,7 @@ ipsc860-mpi:
 	"AR = ar860" \
 	"ARFLAGS = r" \
 	"STRIP = strip860" \
-	"LIBS = -L. -L$(MPILIB)/intelnx/ch_nx -ltachyon -lmpi $(MISCLIB) -lm"   	
+	"LIBS = -L. -L$(MPILIB)/intelnx/ch_nx -ltachyon -lmpi $(MISCLIB) -lm"
 
 ipsc860-mpi-debug:
 	$(MAKE) all \
@@ -287,7 +293,7 @@ ipsc860-mpi-debug:
 	"AR = ar860" \
 	"ARFLAGS = r" \
 	"STRIP = touch " \
-	"LIBS = -L. -L$(MPILIB)/intelnx/ch_nx -ltachyon -lmpi $(MISCLIB) -lm"   	
+	"LIBS = -L. -L$(MPILIB)/intelnx/ch_nx -ltachyon -lmpi $(MISCLIB) -lm"
 
 
 ##
@@ -296,22 +302,18 @@ ipsc860-mpi-debug:
 tru64-alpha:
 	$(MAKE) all \
 	"ARCH = tru64-alpha" \
-	"CC = cc" \
 	"CFLAGS = -std1 -fast -O4 -arch host -tune host -w0 -verbose $(MISCFLAGS) -DLP64" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
 	"LIBS = -non_shared -om -L. -ltachyon $(MISCLIB) -lm"
 
 ##
-## OSF1 / Digital Unix 4.0b on Alpha processors with POSIX Threads 
+## OSF1 / Digital Unix 4.0b on Alpha processors with POSIX Threads
 ##
 tru64-alpha-thr:
 	$(MAKE) all \
 	"ARCH = tru64-alpha-thr" \
-	"CC = cc" \
 	"CFLAGS = -speculate all -std1 -pthread -fast -O4 -arch host -tune host -verbose $(MISCFLAGS) -DTHR -DLP64" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lm"
@@ -319,9 +321,7 @@ tru64-alpha-thr:
 tru64-alpha-thr-ogl:
 	$(MAKE) all \
 	"ARCH = tru64-alpha-thr-ogl" \
-	"CC = cc" \
 	"CFLAGS = -speculate all -std1 -pthread -fast -O4 -arch host -tune host -verbose $(MISCFLAGS) -DTHR -DUSEOPENGL -DLP64" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
 	"LIBS = -L. -ltachyon $(TRU64_GLX_LIBS) $(MISCLIB) -lm"
@@ -448,7 +448,7 @@ solaris-ultra-hpc:
 	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"LIBS = -L. -ltachyon -lmpi $(MISCLIB) -lm -lsocket -lnsl" 
+	"LIBS = -L. -ltachyon -lmpi $(MISCLIB) -lm -lsocket -lnsl"
 
 solaris-mpi:
 	$(MAKE) all \
@@ -458,7 +458,7 @@ solaris-mpi:
 	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"LIBS = -L. -L$(MPILIB)/solaris/ch_p4 -ltachyon -lmpi $(MISCLIB) -lm -lsocket -lnsl" 
+	"LIBS = -L. -L$(MPILIB)/solaris/ch_p4 -ltachyon -lmpi $(MISCLIB) -lm -lsocket -lnsl"
 
 solaris-thr:
 	$(MAKE) all \
@@ -473,9 +473,15 @@ solaris-thr:
 solaris-pthreads-gcc:
 	$(MAKE) all \
 	"ARCH = solaris-pthreads-gcc" \
-	"CC = gcc" \
 	"CFLAGS = -Wall -O3 -fomit-frame-pointer -ffast-math -D_REENTRANT -DSunOS $(MISCFLAGS) -DTHR -DUSEPOSIXTHREADS" \
-	"AR = ar" \
+	"ARFLAGS = r" \
+	"STRIP = strip" \
+	"LIBS = -L. -ltachyon $(MISCLIB) -lm -lpthread"
+
+solaris-pthreads-gcc-64-bit:
+	$(MAKE) all \
+	"ARCH = solaris-pthreads-gcc" \
+	"CFLAGS = -Wall -O4 -m64 -fomit-frame-pointer -ffast-math -D_REENTRANT -DSunOS $(MISCFLAGS) -DTHR -DUSEPOSIXTHREADS" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lm -lpthread"
@@ -618,7 +624,7 @@ solaris-ultra-hpc-ogl:
 	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"LIBS = -L. -ltachyon -lmpi $(MISCLIB) $(SOLARIS_GLX_LIBS) $(MISCLIB) -lm -lsocket -lnsl" 
+	"LIBS = -L. -ltachyon -lmpi $(MISCLIB) $(SOLARIS_GLX_LIBS) $(MISCLIB) -lm -lsocket -lnsl"
 
 solaris-ultra-pthreads-ogl:
 	$(MAKE) all \
@@ -643,9 +649,7 @@ solaris-apcc-ultra-thr:
 solaris-gcc-thr:
 	$(MAKE) all \
 	"ARCH = solaris-gcc-thr" \
-	"CC = gcc" \
 	"CFLAGS = -ansi -Wall -pedantic -O4 -mv8 -msupersparc -DSunOS $(MISCFLAGS) -DTHR -D_REENTRANT" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = touch" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lm -lsocket -lthread"
@@ -653,9 +657,7 @@ solaris-gcc-thr:
 solaris-gcc-thr-x11:
 	$(MAKE) all \
 	"ARCH = solaris-gcc-thr-x11" \
-	"CC = gcc" \
 	"CFLAGS = -ansi -Wall -pedantic -O4 -mv8 -msupersparc $(X11INC) -DSunOS $(MISCFLAGS) -DTHR -D_REENTRANT -DUSEX11" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = touch" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lm -lsocket $(X11LIB) -lthread"
@@ -701,7 +703,7 @@ irix5-mpi:
 	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"LIBS = -L. -L$(MPILIB)/IRIX/ch_p4 -ltachyon -lmpi $(MISCLIB) -lm" 
+	"LIBS = -L. -L$(MPILIB)/IRIX/ch_p4 -ltachyon -lmpi $(MISCLIB) -lm"
 
 irix5:
 	$(MAKE) all \
@@ -710,7 +712,7 @@ irix5:
 	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"LIBS = -L. -ltachyon $(MISCLIB) -lm" 
+	"LIBS = -L. -ltachyon $(MISCLIB) -lm"
 
 irix6:
 	$(MAKE) all \
@@ -719,7 +721,7 @@ irix6:
 	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"LIBS = -L. -ltachyon $(MISCLIB) -lm" 
+	"LIBS = -L. -ltachyon $(MISCLIB) -lm"
 
 irix6-purify:
 	$(MAKE) all \
@@ -738,7 +740,7 @@ irix6-64-thr:
 	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"LIBS = -L. -ltachyon $(MISCLIB) -lm -lpthread" 
+	"LIBS = -L. -ltachyon $(MISCLIB) -lm -lpthread"
 
 irix6-thr:
 	$(MAKE) all \
@@ -747,7 +749,7 @@ irix6-thr:
 	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"LIBS = -L. -ltachyon $(MISCLIB) -lm -lpthread" 
+	"LIBS = -L. -ltachyon $(MISCLIB) -lm -lpthread"
 
 irix6-thr-purify:
 	$(MAKE) all \
@@ -766,7 +768,7 @@ irix6-thr-ogl:
 	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"LIBS = -L. -ltachyon $(IRIX_GLX_LIBS) $(MISCLIB) -lm -lpthread" 
+	"LIBS = -L. -ltachyon $(IRIX_GLX_LIBS) $(MISCLIB) -lm -lpthread"
 
 
 ##
@@ -776,6 +778,8 @@ irix6-thr-ogl:
 ## available yet, since access to a thread capable test machine is needed
 ## for implementation.  These configurations require xlc.
 ##
+## The AIX and HP-UX target for generic compilers (e.g. gcc) have not been
+## properly tested.
 
 
 aix:
@@ -788,6 +792,19 @@ aix:
 	"STRIP = strip" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lm"
 
+# The aix-generic target has not been tested.
+# It should work with gcc and perhaps other
+# compilers, as the compiler name is not
+# hard-coded. As long as CFLAGS are set properly
+# it should work both 32-bit and 64-bit.
+aix-generic:
+	$(MAKE) all \
+	"ARCH = aix-generic" \
+	"CFLAGS = $(CFLAGS) -DAIX $(MISCFLAGS)" \
+	"ARFLAGS = r" \
+	"STRIP = strip" \
+	"LIBS = -L. -ltachyon $(MISCLIB) -lm"
+
 aix-mpi:
 	$(MAKE) all \
 	"ARCH = aix-mpi" \
@@ -808,6 +825,19 @@ aix-thr:
 	"STRIP = strip" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lm -lpthread"
 
+# The aix-generic-thr target has not been tested.
+# It should work with gcc and perhaps other
+# compilers, as the compiler name is not
+# hard-coded. As long as CFLAGS are set properly
+# it should work both 32-bit and 64-bit.
+aix-generic-thr:
+	$(MAKE) all \
+	"ARCH = aix-generic-thr" \
+	"CFLAGS = $(CFLAGS) -DAIX $(MISCFLAGS) -DTHR -D_REENTRANT" \
+	"ARFLAGS = r" \
+	"STRIP = strip" \
+	"LIBS = -L. -ltachyon $(MISCLIB) -lm -lpthread"
+
 aix-64-thr:
 	$(MAKE) all \
 	"ARCH = aix-64-thr" \
@@ -836,6 +866,32 @@ hpux:
 	"STRIP = strip" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lm"
 
+# The hpux-generic target has not been tested.
+# It should work with gcc and perhaps other
+# compilers, as the compiler name is not
+# hard-coded. As long as CFLAGS are set properly
+# it should work both 32-bit and 64-bit.
+hpux-generic:
+	$(MAKE) all \
+	"ARCH = hpux-generic" \
+	"CFLAGS = $(CFLAGS) -DHPUX $(MISCFLAGS)" \
+	"ARFLAGS = r" \
+	"STRIP = strip" \
+	"LIBS = -L. -ltachyon $(MISCLIB) -lm"
+
+# The hpux-generic-thr target has not been tested.
+# It should work with gcc and perhaps other
+# compilers, as the compiler name is not
+# hard-coded. As long as CFLAGS are set properly
+# it should work both 32-bit and 64-bit.
+hpux-generic-thr:
+	$(MAKE) all \
+	"ARCH = hpux-generic-thr" \
+	"CFLAGS = $(CFLAGS) -DHPUX $(MISCFLAGS) -DTHR -D_REENTRANT" \
+	"ARFLAGS = r" \
+	"STRIP = strip" \
+	"LIBS = -L. -ltachyon $(MISCLIB) -lm -lpthread"
+
 hpux-thr:
 	$(MAKE) all \
 	"ARCH = hpux-thr" \
@@ -867,67 +923,57 @@ hpux-ia64-thr:
 next:
 	$(MAKE) all \
 	"ARCH = next" \
-	"CC = cc" \
 	"CFLAGS = -O -DNEXT $(MISCFLAGS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"RANLIB = ranlib" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lm"
 
 macosx:
 	$(MAKE) all \
 	"ARCH = macosx" \
-	"CC = cc" \
 	"CFLAGS = -Os -ffast-math -DBsd $(MISCFLAGS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"RANLIB = ranlib" \
+	"LIBS = -L. -ltachyon $(MISCLIB)"
+
+macosx-64:
+	$(MAKE) all \
+	"ARCH = macosx" \
+	"CFLAGS = -Os -m64 -ffast-math -DBsd $(MISCFLAGS)" \
+	"ARFLAGS = r" \
+	"STRIP = strip" \
 	"LIBS = -L. -ltachyon $(MISCLIB)"
 
 macosx-thr:
 	$(MAKE) all \
 	"ARCH = macosx-thr" \
-	"CC = cc" \
 	"CFLAGS = -Os -ffast-math -DBsd -DTHR -F/System/Library/Frameworks $(MISCFLAGS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"RANLIB = ranlib" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lpthread -framework Carbon"
 
 macosx-altivec:
 	$(MAKE) all \
 	"ARCH = macosx-altivec" \
-	"CC = cc" \
 	"CFLAGS = -Os -mcpu=750 -faltivec -force_cpusubtype_ALL -fomit-frame-pointer -ffast-math -DBsd $(MISCFLAGS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"RANLIB = ranlib" \
 	"LIBS = -L. -ltachyon $(MISCLIB)"
 
 macosx-x86-thr:
 	$(MAKE) all \
 	"ARCH = macosx-x86-thr" \
-	"CC = cc" \
 	"CFLAGS = -O2 -ffast-math -DBsd -DTHR -F/System/Library/Frameworks $(MISCFLAGS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"RANLIB = ranlib" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lpthread -framework Carbon"
 
 macosx-x86-thr-ogl:
 	$(MAKE) all \
 	"ARCH = macosx-x86-thr-ogl" \
-	"CC = cc" \
 	"CFLAGS = -O2 -ffast-math -DBsd -DTHR -I/usr/X11R6/include -F/System/Library/Frameworks $(MISCFLAGS) -DUSEOPENGL" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"RANLIB = ranlib" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lpthread -L/usr/X11R6/lib -lGLU -lGL -lX11 -framework Carbon"
 
 
@@ -938,12 +984,9 @@ macosx-x86-thr-ogl:
 beos:
 	$(MAKE) all \
 	"ARCH = beos" \
-	"CC = gcc" \
 	"CFLAGS = -O3 -fomit-frame-pointer -ffast-math $(MISCFLAGS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"RANLIB = ranlib" \
 	"LIBS = -L. -ltachyon $(MISCLIB)"
 
 ##
@@ -954,23 +997,17 @@ beos:
 bsd:
 	$(MAKE) all \
 	"ARCH = bsd" \
-	"CC = gcc" \
 	"CFLAGS = -O3 -fomit-frame-pointer -ffast-math -DBsd  $(MISCFLAGS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"RANLIB = ranlib" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lm"
 
 bsd-sparc:
 	$(MAKE) all \
 	"ARCH = bsd-sparc" \
-	"CC = gcc" \
 	"CFLAGS = -mv8 -msupersparc -O3 -fomit-frame-pointer -ffast-math -DBsd  $(MISCFLAGS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"RANLIB = ranlib" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lm"
 
 ##
@@ -980,23 +1017,17 @@ bsd-sparc:
 win32:
 	$(MAKE) all \
 	"ARCH = win32" \
-	"CC = gcc" \
-	"CFLAGS = -mpentium -Wall -O3 -fomit-frame-pointer -ffast-math -DWIN32 $(MISCFLAGS)" \
-	"AR = ar" \
+	"CFLAGS = -Wall -O3 -fomit-frame-pointer -ffast-math -DWIN32 $(MISCFLAGS)" \
 	"ARFLAGS = r" \
 	"STRIP = echo" \
-	"RANLIB = echo" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lm"
 
 win32-mpi:
 	$(MAKE) all \
 	"ARCH = win32-mpi" \
-	"CC = gcc" \
-	"CFLAGS = -mpentium -Wall -O3 -fomit-frame-pointer -ffast-math -DWIN32 $(MISCFLAGS) -I'/Program files/MPIPro/INCLUDE' -DMPI" \
-	"AR = ar" \
+	"CFLAGS = -Wall -O3 -fomit-frame-pointer -ffast-math -DWIN32 $(MISCFLAGS) -I'/Program files/MPIPro/INCLUDE' -DMPI" \
 	"ARFLAGS = r" \
 	"STRIP = echo" \
-	"RANLIB = echo" \
 	"LIBS = -L. -L'/Program files/MPIPro/LIB' -ltachyon -lmpi $(MISCLIB) -lm"
 
 ##
@@ -1007,60 +1038,45 @@ win32-mpi:
 linux:
 	$(MAKE) all \
 	"ARCH = linux" \
-	"CC = gcc" \
 	"CFLAGS = -m32 -Wall -O3 -g -ffast-math -DLinux $(MISCFLAGS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"RANLIB = ranlib" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lm"
 
 # Linux on x86, using gcc
 linux-profile:
 	$(MAKE) all \
 	"ARCH = linux-profile" \
-	"CC = gcc" \
 	"CFLAGS = -m32 -Wall -O3 -g -pg -ffast-math -DLinux $(MISCFLAGS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = touch" \
-	"RANLIB = ranlib" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lm"
 
 # Linux on x86, using gcc
 linux-debug:
 	$(MAKE) all \
 	"ARCH = linux-debug" \
-	"CC = gcc" \
 	"CFLAGS = -m32 -Wall -g -DLinux $(MISCFLAGS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = touch" \
-	"RANLIB = ranlib" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lm"
 
 # Linux on AMD64/EM64T, using gcc
 linux-64:
 	$(MAKE) all \
 	"ARCH = linux-64" \
-	"CC = gcc" \
 	"CFLAGS = -m64 -Wall -O3 -fomit-frame-pointer -ffast-math -DLinux -DLP64 $(MISCFLAGS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"RANLIB = ranlib" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lm"
 
 # Linux on AMD64/EM64T, using gcc
 linux-64-debug:
 	$(MAKE) all \
 	"ARCH = linux-64-debug" \
-	"CC = gcc" \
 	"CFLAGS = -m64 -Wall -O -g -DLinux -DLP64 $(MISCFLAGS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = touch" \
-	"RANLIB = ranlib" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lm"
 
 
@@ -1068,12 +1084,9 @@ linux-64-debug:
 linux-64-thr:
 	$(MAKE) all \
 	"ARCH = linux-64-thr" \
-	"CC = gcc" \
 	"CFLAGS = -m64 -Wall -O3 -fomit-frame-pointer -ffast-math -DLinux -DLP64 -DTHR -D_REENTRANT $(MISCFLAGS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"RANLIB = ranlib" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lm -lpthread"
 
 
@@ -1081,17 +1094,14 @@ linux-64-thr:
 linux-p4:
 	$(MAKE) all \
 	"ARCH = linux-p4" \
-	"CC = gcc" \
 	"CFLAGS = -mcpu=i686 -march=i686 -funroll-loops -fexpensive-optimizations -malign-double -fschedule-insns2 -Wall -O3 -fomit-frame-pointer -ffast-math -DLinux $(MISCFLAGS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"RANLIB = ranlib" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lm"
 
 # Linux x86, on Intel P4 using Intel C 8.0
-#	"CFLAGS = -axN -fast -ansi_alias -DLinux $(MISCFLAGS)" 
-#	"CFLAGS = -restrict -O3 -tpp7 -vec_report3 -xiMKW -ip -unroll -static -DLinux $(MISCFLAGS)" 
+#	"CFLAGS = -axN -fast -ansi_alias -DLinux $(MISCFLAGS)"
+#	"CFLAGS = -restrict -O3 -tpp7 -vec_report3 -xiMKW -ip -unroll -static -DLinux $(MISCFLAGS)"
 linux-p4-icc:
 	$(MAKE) all \
 	"ARCH = linux-p4-icc" \
@@ -1119,23 +1129,17 @@ linux-p4-icc-thr:
 linux-athlon:
 	$(MAKE) all \
 	"ARCH = linux-athlon" \
-	"CC = gcc" \
 	"CFLAGS = -mcpu=athlon -march=athlon -funroll-loops -fexpensive-optimizations -malign-double -fschedule-insns2 -Wall -O3 -fomit-frame-pointer -ffast-math -DLinux $(MISCFLAGS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"RANLIB = ranlib" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lm"
 
 linux-athlon-thr:
 	$(MAKE) all \
 	"ARCH = linux-athlon-thr" \
-	"CC = gcc" \
 	"CFLAGS = -mcpu=athlon -march=athlon -funroll-loops -fexpensive-optimizations -malign-double -fschedule-insns2 -Wall -O3 -fomit-frame-pointer -ffast-math -DLinux -DTHR -D_REENTRANT $(MISCFLAGS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"RANLIB = ranlib" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lm -lpthread"
 
 
@@ -1167,21 +1171,25 @@ linux-athlon-pgcc:
 linux-thr:
 	$(MAKE) all \
 	"ARCH = linux-thr" \
-	"CC = gcc" \
 	"CFLAGS = -m32 -Wall -O3 -fomit-frame-pointer -ffast-math -DLinux -DTHR -D_REENTRANT $(MISCFLAGS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"RANLIB = ranlib" \
+	"LIBS = -L. -ltachyon $(MISCLIB) -lm -lpthread"
+
+# Linux Arm using gcc, with threads
+linux-arm-thr:
+	$(MAKE) all \
+	"ARCH = linux-arm-thr" \
+	"CFLAGS = -Wall -O3 -fomit-frame-pointer -ffast-math -DLinux -DTHR -D_REENTRANT $(MISCFLAGS)" \
+	"ARFLAGS = r" \
+	"STRIP = strip" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lm -lpthread"
 
 # Linux x86 using gcc, threads, and OpenGL
 linux-thr-ogl:
 	$(MAKE) all \
 	"ARCH = linux-thr-ogl" \
-	"CC = cc" \
 	"CFLAGS = -m32 -Wall -O3 -fomit-frame-pointer -ffast-math -DLinux -DTHR -D_REENTRANT $(MISCFLAGS) -DUSEOPENGL $(LINUX_GLX_INCS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = touch" \
 	"LIBS = -L. -ltachyon $(MISCLIB) $(LINUX_GLX_LIBS) $(MISCLIB) -lm -lpthread"
@@ -1190,24 +1198,18 @@ linux-thr-ogl:
 linux-beowulf-mpi-ogl:
 	$(MAKE) all \
 	"ARCH = linux-beowulf-mpi" \
-	"CC = gcc" \
 	"CFLAGS = -m32 -Wall -O3 -fomit-frame-pointer -ffast-math -DLinux -DMPI $(MISCFLAGS) -DUSEOPENGL $(LINUX_GLX_INCS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"RANLIB = ranlib" \
 	"LIBS = -L. -ltachyon -lmpi $(MISCLIB) $(LINUX_GLX_LIBS) $(MISCLIB) -lm"
 
 # Linux x86 using Scyld's beowulf distribution
 linux-beowulf-mpi:
 	$(MAKE) all \
 	"ARCH = linux-beowulf-mpi" \
-	"CC = gcc" \
 	"CFLAGS = -m32 -Wall -O3 -fomit-frame-pointer -ffast-math -DLinux -DMPI $(MISCFLAGS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"RANLIB = ranlib" \
 	"LIBS = -L. -ltachyon -lmpi $(MISCLIB) -lm"
 
 # Linux x86 using LAM MPI
@@ -1239,10 +1241,8 @@ linux-mpi:
 	"ARCH = linux-mpi" \
 	"CC = mpicc" \
 	"CFLAGS = -DLinux -DMPI $(MISCFLAGS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"RANLIB = ranlib" \
 	"LIBS = -L. -ltachyon  $(MISCLIB) -lm"
 
 linux-mpi-thr:
@@ -1250,10 +1250,8 @@ linux-mpi-thr:
 	"ARCH = linux-mpi-thr" \
 	"CC = mpicc" \
 	"CFLAGS = -DLinux -DMPI -DTHR $(MISCFLAGS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"RANLIB = ranlib" \
 	"LIBS = -L. -ltachyon  $(MISCLIB) -lm -lpthread"
 
 linux-mpi-64:
@@ -1261,10 +1259,8 @@ linux-mpi-64:
 	"ARCH = linux-mpi-64" \
 	"CC = mpicc" \
 	"CFLAGS = -Wall -O3 -fomit-frame-pointer -ffast-math -I$(LAMHOME)/h -DLinux -DMPI -DLP64 $(MISCFLAGS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"RANLIB = ranlib" \
 	"LIBS = -L. -L$(LAMHOME)/lib -ltachyon $(MISCLIB) -lm"
 
 
@@ -1297,48 +1293,36 @@ linux-lam-thr:
 linux-ipaq:
 	$(MAKE) all \
 	"ARCH = linux-ipaq" \
-	"CC = gcc" \
 	"CFLAGS = -Wall -O3 -fomit-frame-pointer -ffast-math -DLinux $(MISCFLAGS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"RANLIB = ranlib" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lm"
 
-# Linux PPC using gcc 
+# Linux PPC using gcc
 linux-ppc:
 	$(MAKE) all \
 	"ARCH = linux-ppc" \
-	"CC = gcc" \
 	"CFLAGS = -Wall -O3 -fomit-frame-pointer -ffast-math -DLinux $(MISCFLAGS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"RANLIB = ranlib" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lm"
 
-# Linux PPC using gcc 
+# Linux PPC using gcc
 linux-ps2:
 	$(MAKE) all \
 	"ARCH = linux-ps2" \
-	"CC = gcc" \
 	"CFLAGS = -Wall -O3 -fomit-frame-pointer -ffast-math -DLinux $(MISCFLAGS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"RANLIB = ranlib" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lm"
 
-# Linux Alpha using gcc 
+# Linux Alpha using gcc
 linux-alpha:
 	$(MAKE) all \
 	"ARCH = linux-alpha" \
-	"CC = gcc" \
 	"CFLAGS = -Wall -O3 -fomit-frame-pointer -ffast-math -DLinux $(MISCFLAGS)" \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
-	"RANLIB = ranlib" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lm"
 
 # Linux Alpha using Compaq's compilers
@@ -1369,12 +1353,9 @@ linux-alpha-ccc-qsw:
 linux-ia64:
 	$(MAKE) all \
 	"ARCH = linux-ia64" \
-	"CC = cc" \
 	"CFLAGS = -O3 -DLinux $(MISCFLAGS) -DLP64" \
-	"AR = ar" \
 	"ARFLAGS = r" \
-	"STRIP = strip" \
-	"RANLIB = ranlib" \
+	"STRIP = echo" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lm"
 
 # Linux IA-64 using SGI compilers (Merced, Itanium, McKinley, etc)
@@ -1393,12 +1374,9 @@ linux-ia64-sgicc:
 linux-ia64-thr:
 	$(MAKE) all \
 	"ARCH = linux-ia64-thr" \
-	"CC = cc" \
 	"CFLAGS = -O3 -DLinux -DTHR -D_REENTRANT $(MISCFLAGS) -DLP64" \
-	"AR = ar" \
 	"ARFLAGS = r" \
-	"STRIP = strip" \
-	"RANLIB = ranlib" \
+	"STRIP = echo" \
 	"LIBS = -L. -ltachyon $(MISCLIB) -lm -lpthread"
 
 # Linux IA-64 using SGI compilers and threads (Merced, Itanium, McKinley, etc)
@@ -1421,9 +1399,7 @@ linux-ia64-thr-sgicc:
 sgi-altix-mpi:
 	$(MAKE) all \
 	"ARCH = sgi-altix-mpi" \
-	"CC = cc" \
 	"CFLAGS = -Wall -O3 -DLinux  -DMPI " \
-	"AR = ar" \
 	"ARFLAGS = r" \
 	"STRIP = strip" \
 	"LIBS = -ltachyon -lmpi $(MISCLIB) -lm "
@@ -1432,7 +1408,7 @@ sgi-altix-mpi:
 ## CSPI PowerPC Based Multicomputers Running VXWORKS
 ## This configuration works for the machine at MPI Software Technologies
 ## Uses MSTI MPI/Pro for message passing.
-## 
+##
 cspi-ppc-mpi:
 	$(MAKE) all \
 	"ARCH = cspi-ppc-mpi" \
@@ -1448,7 +1424,7 @@ cspi-ppc-mpi:
 ## Mercury PowerPC Based Multicomputers Running MCOS
 ## This configuration works for the machine at MPI Software Technologies
 ## Uses MSTI MPI/Pro for message passing.
-## 
+##
 mercury-ppc-mpi:
 	$(MAKE) all \
 	"ARCH = mercury-ppc-mpi" \
@@ -1469,7 +1445,7 @@ mercury-ppc-mpi-rtvi:
 	"ARFLAGS = -r" \
 	"STRIP = /bin/touch" \
 	"LIBS = -L. -L/opt/MPIPro/lib ../compile/mercury-ppc-mpi-rtvi/libmgf.a ../compile/mercury-ppc-mpi-rtvi/libray.a $(RTVILIB) -lmpi.appc"
-	@echo "Note: Remember to link ray.ppc -> ray before your first run."	
+	@echo "Note: Remember to link ray.ppc -> ray before your first run."
 	@echo "      Also, copy your machines file into your CWD."
 
 ##
@@ -1490,7 +1466,7 @@ mercury-i860-rtvi:
 ## Mercury i860 Based Multicomputers Running MCOS
 ## This configuration works for the machine at MPI Software Technologies
 ## Uses MSTI MPI/Pro for message passing.
-## 
+##
 mercury-i860-mpi:
 	$(MAKE) all \
 	"ARCH = mercury-i860-mpi" \
