diff --git a/tools/build.sh b/tools/build.sh
index bd46f3d5650f81b7ae2678d3123ccf3e4b1216bf..5e6e9dc6141031ca945448a3831371e9532b3510 100755
--- a/tools/build.sh
+++ b/tools/build.sh
@@ -88,6 +88,15 @@ usage ()
     exit 1
 }
 
+# Figure out if we need to run build-world twice
+case `uname -s` in
+  SunOS) BUILD_WORLD2=yes ;;
+  Darwin)
+      case `uname -m` in
+	ppc) BUILD_WORLD2=yes ;;
+      esac ;;
+esac
+
 buildit ()
 {
     if echo $INTERACTIVE_BUILD | grep $BUILD > /dev/null; then
@@ -107,7 +116,10 @@ buildit ()
 	$TOOLDIR/clean-target.sh $TARGET
 	$TIMER $TOOLDIR/build-world.sh $TARGET $OLDLISP $BOOT
 	(cd $TARGET/lisp; $MAKE)
-	#$TOOLDIR/build-world.sh $TARGET $OLDLISP
+	if [ "$BUILD_WORLD2" = "yes" ];
+	then
+	    $TOOLDIR/build-world.sh $TARGET $OLDLISP
+	fi
 	$TOOLDIR/load-world.sh $TARGET "$VERSION"
 	if [ ! -f $TARGET/lisp/lisp.core ]; then
 	    echo "Failed to build $TARGET!"