diff --git a/etc/bashrc b/etc/bashrc
index 3b001711bc0649acee98e87b9fe78e763ec6d13d..26dc8c2dfc806109f539bdc8f4e6ae8f5a1b1188 100644
--- a/etc/bashrc
+++ b/etc/bashrc
@@ -152,10 +152,12 @@ Linux)
             ;;
         esac
         ;;
+
     ia64)
         WM_ARCH=linuxIA64
         export WM_COMPILER=I64
         ;;
+
     mips64)
         WM_ARCH=SiCortex64
         export WM_COMPILER_LIB_ARCH=64
@@ -166,6 +168,17 @@ Linux)
         export WM_LDFLAGS='-mabi=64 -G0'
         export WM_MPLIB=MPI
         ;;
+
+    ppc64)
+        WM_ARCH=linuxPPC64
+        export WM_COMPILER_LIB_ARCH=64
+        export WM_CC='gcc'
+        export WM_CXX='g++'
+        export WM_CFLAGS='-m64 -fPIC'
+        export WM_CXXFLAGS='-m64 -fPIC'
+        export WM_LDFLAGS='-m64'
+        ;;
+
     *)
         echo Unknown processor type `uname -m` for Linux
         ;;
diff --git a/etc/cshrc b/etc/cshrc
index 034a5bfbfa25ce4571d0191b73e9e338f2f8b0d1..f4147422f99595d06db46d35e228a4591146663f 100644
--- a/etc/cshrc
+++ b/etc/cshrc
@@ -120,6 +120,7 @@ case Linux:
     switch (`uname -m`)
     case i686:
         breaksw
+
     case x86_64:
         switch ($WM_ARCH_OPTION)
         case 32:
@@ -131,6 +132,7 @@ case Linux:
             setenv WM_CXXFLAGS '-m32 -fPIC'
             setenv WM_LDFLAGS '-m32'
             breaksw
+
         case 64:
             setenv WM_ARCH linux64
             setenv WM_COMPILER_LIB_ARCH 64
@@ -140,15 +142,19 @@ case Linux:
             setenv WM_CXXFLAGS '-m64 -fPIC'
             setenv WM_LDFLAGS '-m64'
             breaksw
+
         default:
             echo Unknown WM_ARCH_OPTION $WM_ARCH_OPTION, should be 32 or 64
             breaksw
+
         endsw
         breaksw
+
     case ia64:
         setenv WM_ARCH linuxIA64
         setenv WM_COMPILER I64
         breaksw
+
     case mips64:
         setenv WM_ARCH SiCortex64
         setenv WM_COMPILER_LIB_ARCH 64
@@ -159,9 +165,21 @@ case Linux:
         setenv WM_LDFLAGS '-mabi=64 -G0'
         setenv WM_MPLIB MPI
         breaksw
+
+    case ppc64:
+        setenv WM_ARCH linuxPPC64
+        setenv WM_COMPILER_LIB_ARCH 64
+        setenv WM_CC 'gcc'
+        setenv WM_CXX 'g++'
+        setenv WM_CFLAGS '-m64 -fPIC'
+        setenv WM_CXXFLAGS '-m64 -fPIC'
+        setenv WM_LDFLAGS '-m64'
+        breaksw
+
     default:
         echo Unknown processor type `uname -m` for Linux
         breaksw
+
     endsw
     breaksw
 
diff --git a/wmake/rules/linuxPPC64Gcc/X b/wmake/rules/linuxPPC64Gcc/X
new file mode 100644
index 0000000000000000000000000000000000000000..5d1f9c5cc54b4689118c6f1f54f0a2d6d7a29827
--- /dev/null
+++ b/wmake/rules/linuxPPC64Gcc/X
@@ -0,0 +1,3 @@
+XFLAGS     =
+XINC       = $(XFLAGS) -I/usr/X11R6/include
+XLIBS      = -L/usr/X11R6/lib64 -lXext -lX11
diff --git a/wmake/rules/linuxPPC64Gcc/c b/wmake/rules/linuxPPC64Gcc/c
new file mode 100644
index 0000000000000000000000000000000000000000..6c0a9e3b49a9f55b06e197aa0e191ab221a22168
--- /dev/null
+++ b/wmake/rules/linuxPPC64Gcc/c
@@ -0,0 +1,16 @@
+.SUFFIXES: .c .h
+
+cWARN        = -Wall
+
+cc          = gcc -m64 -mcpu=power5+
+
+include $(RULES)/c$(WM_COMPILE_OPTION)
+
+cFLAGS      = $(GFLAGS) $(cWARN) $(cOPT) $(cDBUG) $(LIB_HEADER_DIRS) -fPIC
+
+ctoo        = $(WM_SCHEDULER) $(cc) $(cFLAGS) -c $$SOURCE -o $@
+
+LINK_LIBS   = $(cDBUG)
+
+LINKLIBSO   = $(cc) -shared
+LINKEXE     = $(cc) -Xlinker -z -Xlinker nodefs
diff --git a/wmake/rules/linuxPPC64Gcc/c++ b/wmake/rules/linuxPPC64Gcc/c++
new file mode 100644
index 0000000000000000000000000000000000000000..7590b089a32e5cdf9b0413d02dd01b1286394d60
--- /dev/null
+++ b/wmake/rules/linuxPPC64Gcc/c++
@@ -0,0 +1,21 @@
+.SUFFIXES: .C .cxx .cc .cpp
+
+c++WARN     = -Wall -Wno-strict-aliasing -Wextra -Wno-unused-parameter -Wold-style-cast
+
+CC          = g++ -m64 -mcpu=power5+
+
+include $(RULES)/c++$(WM_COMPILE_OPTION)
+
+ptFLAGS     = -DNoRepository -ftemplate-depth-40
+
+c++FLAGS    = $(GFLAGS) $(c++WARN) $(c++OPT) $(c++DBUG) $(ptFLAGS) $(LIB_HEADER_DIRS) -fPIC
+
+Ctoo        = $(WM_SCHEDULER) $(CC) $(c++FLAGS) -c $$SOURCE -o $@
+cxxtoo      = $(Ctoo)
+cctoo       = $(Ctoo)
+cpptoo      = $(Ctoo)
+
+LINK_LIBS   = $(c++DBUG)
+
+LINKLIBSO   = $(CC) $(c++FLAGS) -shared
+LINKEXE     = $(CC) $(c++FLAGS)
diff --git a/wmake/rules/linuxPPC64Gcc/c++Debug b/wmake/rules/linuxPPC64Gcc/c++Debug
new file mode 100644
index 0000000000000000000000000000000000000000..19bdb9c3346fc7a69380dfedd6e7911fe220a965
--- /dev/null
+++ b/wmake/rules/linuxPPC64Gcc/c++Debug
@@ -0,0 +1,2 @@
+c++DBUG    = -ggdb3 -DFULLDEBUG
+c++OPT      = -O0 -fdefault-inline
diff --git a/wmake/rules/linuxPPC64Gcc/c++Opt b/wmake/rules/linuxPPC64Gcc/c++Opt
new file mode 100644
index 0000000000000000000000000000000000000000..2aedabd6280a3476bc58db13139a0a3aa579502b
--- /dev/null
+++ b/wmake/rules/linuxPPC64Gcc/c++Opt
@@ -0,0 +1,2 @@
+c++DBUG     =
+c++OPT      = -O3
diff --git a/wmake/rules/linuxPPC64Gcc/c++Prof b/wmake/rules/linuxPPC64Gcc/c++Prof
new file mode 100644
index 0000000000000000000000000000000000000000..3bda4dad55e898a8198f6e8bfe21e8d829d7230a
--- /dev/null
+++ b/wmake/rules/linuxPPC64Gcc/c++Prof
@@ -0,0 +1,2 @@
+c++DBUG    = -pg
+c++OPT     = -O2
diff --git a/wmake/rules/linuxPPC64Gcc/cDebug b/wmake/rules/linuxPPC64Gcc/cDebug
new file mode 100644
index 0000000000000000000000000000000000000000..72b638f458220e329d52b59e3566a3c807101f9d
--- /dev/null
+++ b/wmake/rules/linuxPPC64Gcc/cDebug
@@ -0,0 +1,2 @@
+cDBUG       = -ggdb -DFULLDEBUG
+cOPT        = -O1 -fdefault-inline -finline-functions
diff --git a/wmake/rules/linuxPPC64Gcc/cOpt b/wmake/rules/linuxPPC64Gcc/cOpt
new file mode 100644
index 0000000000000000000000000000000000000000..e6512b7aab42b97fe9e77a1d60fe586e5c1dc104
--- /dev/null
+++ b/wmake/rules/linuxPPC64Gcc/cOpt
@@ -0,0 +1,2 @@
+cDBUG       =
+cOPT        = -O3 -fno-gcse
diff --git a/wmake/rules/linuxPPC64Gcc/cProf b/wmake/rules/linuxPPC64Gcc/cProf
new file mode 100644
index 0000000000000000000000000000000000000000..ca3ac9bf5f0cd61fe99e0f05fa1bd4bdf9fa6cf7
--- /dev/null
+++ b/wmake/rules/linuxPPC64Gcc/cProf
@@ -0,0 +1,2 @@
+cDBUG       = -pg
+cOPT        = -O2
diff --git a/wmake/rules/linuxPPC64Gcc/general b/wmake/rules/linuxPPC64Gcc/general
new file mode 100644
index 0000000000000000000000000000000000000000..2626ab65d12cbba1680848fdc93cfb2b05f3920b
--- /dev/null
+++ b/wmake/rules/linuxPPC64Gcc/general
@@ -0,0 +1,11 @@
+CPP        = /lib/cpp $(GFLAGS)
+LD         = ld -m elf64ppc
+
+PROJECT_LIBS = -l$(WM_PROJECT) -liberty -ldl
+
+include $(GENERAL_RULES)/standard
+
+include $(RULES)/X
+include $(RULES)/c
+include $(RULES)/c++
+include $(GENERAL_RULES)/cint
diff --git a/wmake/rules/linuxPPC64Gcc/mplib b/wmake/rules/linuxPPC64Gcc/mplib
new file mode 100644
index 0000000000000000000000000000000000000000..8a84b4014695e82f55b709ed5144f4b528412137
--- /dev/null
+++ b/wmake/rules/linuxPPC64Gcc/mplib
@@ -0,0 +1,3 @@
+PFLAGS     = 
+PINC       = 
+PLIBS      = 
diff --git a/wmake/rules/linuxPPC64Gcc/mplibGAMMA b/wmake/rules/linuxPPC64Gcc/mplibGAMMA
new file mode 100644
index 0000000000000000000000000000000000000000..d62c6250ff4769093207d0ac35ec5bdc16f2f0ab
--- /dev/null
+++ b/wmake/rules/linuxPPC64Gcc/mplibGAMMA
@@ -0,0 +1,3 @@
+PFLAGS     = 
+PINC       = -I$(MPI_ARCH_PATH)/include
+PLIBS      = -L$(MPI_ARCH_PATH)/lib -lgamma
diff --git a/wmake/rules/linuxPPC64Gcc/mplibHPMPI b/wmake/rules/linuxPPC64Gcc/mplibHPMPI
new file mode 100644
index 0000000000000000000000000000000000000000..574492a236a32f7d87d00bf0e3507a5ac8e54f55
--- /dev/null
+++ b/wmake/rules/linuxPPC64Gcc/mplibHPMPI
@@ -0,0 +1,3 @@
+PFLAGS     =
+PINC       = -I$(MPI_ARCH_PATH)/include -D_MPICC_H
+PLIBS      = -L$(MPI_ARCH_PATH)/lib/linux_amd64 -lmpi
diff --git a/wmake/rules/linuxPPC64Gcc/mplibLAM b/wmake/rules/linuxPPC64Gcc/mplibLAM
new file mode 100644
index 0000000000000000000000000000000000000000..6762b843c122f498a54c6e619febedd964f773cc
--- /dev/null
+++ b/wmake/rules/linuxPPC64Gcc/mplibLAM
@@ -0,0 +1,3 @@
+PFLAGS     = 
+PINC       = -I$(MPI_ARCH_PATH)/include
+PLIBS      = -L$(MPI_ARCH_PATH)/lib -lmpi -llam -lpthread -lutil
diff --git a/wmake/rules/linuxPPC64Gcc/mplibMPICH b/wmake/rules/linuxPPC64Gcc/mplibMPICH
new file mode 100644
index 0000000000000000000000000000000000000000..ac17f7c1d2e2665b7372df09fb3fee4d95b85511
--- /dev/null
+++ b/wmake/rules/linuxPPC64Gcc/mplibMPICH
@@ -0,0 +1,3 @@
+PFLAGS     = 
+PINC       = -I$(MPI_ARCH_PATH)/include
+PLIBS      = -L$(MPI_ARCH_PATH)/lib -lmpich -lrt
diff --git a/wmake/rules/linuxPPC64Gcc/mplibMPICH-GM b/wmake/rules/linuxPPC64Gcc/mplibMPICH-GM
new file mode 100644
index 0000000000000000000000000000000000000000..88493ebc7059aac7da8678f743a18077a54b9d00
--- /dev/null
+++ b/wmake/rules/linuxPPC64Gcc/mplibMPICH-GM
@@ -0,0 +1,3 @@
+PFLAGS     =
+PINC       = -I$(MPI_ARCH_PATH)/include
+PLIBS      = -L$(MPI_ARCH_PATH)/lib -lmpich -L$(GM_LIB_PATH) -lgm
diff --git a/wmake/rules/linuxPPC64Gcc/mplibOPENMPI b/wmake/rules/linuxPPC64Gcc/mplibOPENMPI
new file mode 100644
index 0000000000000000000000000000000000000000..834d2d3e22aaebee233a19b139b6d99a4d457cf7
--- /dev/null
+++ b/wmake/rules/linuxPPC64Gcc/mplibOPENMPI
@@ -0,0 +1,3 @@
+PFLAGS     = -DOMPI_SKIP_MPICXX
+PINC       = -I$(MPI_ARCH_PATH)/include
+PLIBS      = -L$(MPI_ARCH_PATH)/lib -lmpi
diff --git a/wmake/rules/linuxPPC64Gcc/mplibQSMPI b/wmake/rules/linuxPPC64Gcc/mplibQSMPI
new file mode 100644
index 0000000000000000000000000000000000000000..95ea327379f54d7bab8d03218d9bcf114f63a75b
--- /dev/null
+++ b/wmake/rules/linuxPPC64Gcc/mplibQSMPI
@@ -0,0 +1,4 @@
+PFLAGS     =
+PINC       = -I$(MPI_ARCH_PATH)/include
+PLIBS      = -L$(MPI_ARCH_PATH)/lib -lmpi
+