Index: configure
===================================================================
--- configure	(revision 4028)
+++ configure	(working copy)
@@ -1597,6 +1597,8 @@
 		CYGNUS_CONFIGURE_HOST=ia64-linux-gnu
 		GCC_CONFIGURE_HOST=ia64-redhat-linux
 		;;
+	powerpc-*-linux*)
+		;;
 	*)
 		{ { echo "$as_me:$LINENO: error: \"open64 is not supported on $target\"" >&5
 echo "$as_me: error: \"open64 is not supported on $target\"" >&2;}
@@ -1649,10 +1651,7 @@
 		;;
 	powerpc-*-linux*)
 		MACHINE_TYPE=PPC32
-		CROSS_TARGET="$target"
 		BUILD_ABI=I32BIT
-		BUILD_ARCH=IA32
-		BUILD_HOST=IA32
 		BUILD_TARGET=PPC32
 		BUILD_MULTILIB=NO
 		BUILD_VENDOR=OSP
@@ -1660,9 +1659,20 @@
 		GCC_CONFIGURE_HOST=powerpc-redhat-linux
 		GCC_CONFIGURE_BUILD=powerpc-redhat-linux
 		CYGNUS_CONFIGURE_TARG=mipsel-elf-linux
+		GCC_CONFIGURE_COMPILER+=" -m32"
 		GCC_CONFIGURE_CFLAGS+=" -DTARG_PPC32"
-		GCC_CONFIGURE_COMPILER+=" -m32"
-		;;
+		case "$host" in
+			powerpc-*-linux*)
+				BUILD_ARCH=PPC32
+				BUILD_HOST=PPC32
+				GCC_CONFIGURE_CFLAGS+=" -DTARG_PPC"
+			;;
+			*)
+				BUILD_ARCH=IA32
+				BUILD_HOST=IA32
+				CROSS_TARGET="$target"
+			;;
+		esac ;;
 	sl*-*-linux*)
 		MACHINE_TYPE=SL
 		BUILD_TARGET=SL
Index: Makefile.in
===================================================================
--- Makefile.in	(revision 4028)
+++ Makefile.in	(working copy)
@@ -112,9 +112,12 @@
 BASIC_COMPONENTS += \
 		$(NATIVE_BUILD_DIR)/ipa/ipa.so \
 		$(NATIVE_BUILD_DIR)/ipl/ipl.so \
-		$(NATIVE_BUILD_DIR)/ipl/ipl \
+		$(NATIVE_BUILD_DIR)/ipl/ipl 
+ifneq ($(LIB_BUILD_ARCH), PPC32)
+BASIC_COMPONENTS += \
 		$(NATIVE_BUILD_DIR_LD)/ld/ld-new 
 endif
+endif
 
 ifeq ($(BUILD_FORTRAN), YES)
 BASIC_COMPONENTS += \
@@ -152,8 +155,11 @@
 		$(NATIVE_BUILD_DIR)/libelfutil \
 		$(NATIVE_BUILD_DIR)/libdwarf \
 		$(NATIVE_BUILD_DIR)/libunwindP \
-		$(NATIVE_BUILD_DIR)/libcif \
-		$(NATIVE_BUILD_DIR)/arith
+		$(NATIVE_BUILD_DIR)/libcif
+ifneq ($(LIB_BUILD_ARCH), PPC32)
+FIRST_COMPONENTS = \
+                $(NATIVE_BUILD_DIR)/arith
+endif
 
 NATIVE_COMPONENTS = $(BASIC_COMPONENTS) $(TARGET_EXTRA_OBJ)  \
                     $(GNU4_FE_COMPONENTS) $(FORT_FE_COMPONENTS) \
@@ -222,8 +228,10 @@
 libcif: include
 	$(MAKE) -C $(NATIVE_BUILD_DIR)/libcif
 
+ifneq ($(LIB_BUILD_ARCH), PPC32)
 arith:
 	$(MAKE) -C $(NATIVE_BUILD_DIR)/arith
+endif
 
 $(NATIVE_BUILD_DIR)/driver/driver driver: include
 	$(MAKE) -C $(NATIVE_BUILD_DIR)/driver
@@ -318,8 +326,10 @@
 $(NATIVE_BUILD_DIR)/ir_tools/ir_b2a ir_b2a: libcomutil
 	$(MAKE) -C $(NATIVE_BUILD_DIR)/ir_tools
 
+ifneq ($(LIB_BUILD_ARCH), PPC32)
 $(NATIVE_BUILD_DIR)/crayf90/sgi/mfef95 mfef95: libcomutil libcif arith
 	$(MAKE) -C $(NATIVE_BUILD_DIR)/crayf90
+endif
 
 .PHONY: phony_targets first
 $(NATIVE_BUILD_DIR_LD)/ld/ld-new ld-new:
Index: configure.ac
===================================================================
--- configure.ac	(revision 4028)
+++ configure.ac	(working copy)
@@ -224,6 +224,8 @@
 		CYGNUS_CONFIGURE_HOST=ia64-linux-gnu
 		GCC_CONFIGURE_HOST=ia64-redhat-linux
 		;;
+	powerpc-*-linux*)
+		;;
 	*)
 		AC_MSG_ERROR(["open64 is not supported on $target"])
 		;;
@@ -274,10 +276,7 @@
 		;;
 	powerpc-*-linux*)
 		MACHINE_TYPE=PPC32
-		CROSS_TARGET="$target"
 		BUILD_ABI=I32BIT
-		BUILD_ARCH=IA32
-		BUILD_HOST=IA32
 		BUILD_TARGET=PPC32
 		BUILD_MULTILIB=NO
 		BUILD_VENDOR=OSP
@@ -285,9 +284,20 @@
 		GCC_CONFIGURE_HOST=powerpc-redhat-linux
 		GCC_CONFIGURE_BUILD=powerpc-redhat-linux
 		CYGNUS_CONFIGURE_TARG=mipsel-elf-linux
+		GCC_CONFIGURE_COMPILER+=" -m32"
 		GCC_CONFIGURE_CFLAGS+=" -DTARG_PPC32"
-		GCC_CONFIGURE_COMPILER+=" -m32"
-		;;
+		case "$host" in
+			powerpc-*-linux*)
+				BUILD_ARCH=PPC32
+				BUILD_HOST=PPC32
+				GCC_CONFIGURE_CFLAGS+=" -DTARG_PPC"
+			;;
+			*)
+				BUILD_ARCH=IA32
+				BUILD_HOST=IA32
+				CROSS_TARGET="$target"
+			;;
+		esac ;;
 	sl*-*-linux*)
 		MACHINE_TYPE=SL
 		BUILD_TARGET=SL
Index: install_compiler.sh
===================================================================
--- install_compiler.sh	(revision 4028)
+++ install_compiler.sh	(working copy)
@@ -58,6 +58,9 @@
 
 if [ -z "$3" ]; then
 	CROSS_TARGET=""
+	if [ $1 = "PPC32" ]; then
+		ARCH="ppc"
+	fi
 else
     CROSS_TARGET=$3
 fi
@@ -91,6 +94,7 @@
 ppc )
     BUILD_HOST="ppc32"
     TARG_HOST="ppc32"
+    INSTALL_FORTRAN="NO"
     AREA="osprey/targppc32_ppc32"
     PHASE_DIR_PREFIX="ppc32"
     PREBUILD_INTERPOS="ppc32-linux"
@@ -197,7 +201,6 @@
     if [ "$ARCH" = "PPC32" ]; then
     INSTALL_EXEC_SUB ${AREA}/driver/driver  ${BIN_DIR}/powercc
     INSTALL_EXEC_SUB ${AREA}/driver/driver  ${BIN_DIR}/powercc-${VERSION}
-    ln -sf ${BIN_DIR}/powercc  ${BIN_DIR}/${CROSS_TARGET}-opencc
     else
     INSTALL_EXEC_SUB ${AREA}/driver/driver  ${BIN_DIR}/opencc
     INSTALL_EXEC_SUB ${AREA}/driver/driver  ${BIN_DIR}/openCC
@@ -274,7 +277,7 @@
 
     # GNU 4.2.0 based FE
     INSTALL_EXEC_SUB ${AREA}/wgen/wgen42 ${PHASEPATH}/wgen42
-    if [ "$ARCH" = "PPC32" ]; then
+    if [ "$TARG_HOST" = "ppc32" ]; then
     LIBEXEC=libexec/gcc/powerpc-redhat-linux/4.2.0
     else
     LIBEXEC=libexec/gcc/${PHASE_DIR_PREFIX}-redhat-linux/4.2.0
Index: osprey-gcc-4.2.0/gcc/c-tree.h
===================================================================
--- osprey-gcc-4.2.0/gcc/c-tree.h	(revision 4028)
+++ osprey-gcc-4.2.0/gcc/c-tree.h	(working copy)
@@ -34,7 +34,7 @@
    know how big it is.  This is sanity-checked in c-decl.c.  */
 /* Bug 12755: On mips native, there is a extra four bytes (of alignment
  * padding?) somewhere */
-#ifdef ARCH_MIPS || defined(ARCH_PPC) 
+#if defined(ARCH_MIPS) || defined(TARG_PPC)
 #define C_SIZEOF_STRUCT_LANG_IDENTIFIER \
   (sizeof (struct c_common_identifier) + 3 * sizeof (void *) + 4)
 #else
