diff --git a/ghc/compiler/Makefile b/ghc/compiler/Makefile
index 25460e31143ebfd7f0dc38bc462f6d22c476788f..721f190351561d0650e4101a4714ddb25a24c8a6 100644
--- a/ghc/compiler/Makefile
+++ b/ghc/compiler/Makefile
@@ -5,7 +5,7 @@ include $(TOP)/mk/boilerplate.mk
 
 #-----------------------------------------------------------------------------
 # Building hsc different ways (default is just `normal' sequential)
-override WAYS=$(GhcCompilerWays)
+WAYS=$(GhcCompilerWays)
 
 #-----------------------------------------------------------------------------
 #		Set SUBDIRS
@@ -187,9 +187,9 @@ rename/ParseIface_HC_OPTS 	+= -Onot -H16m
 rename/ParseType_HC_OPTS 	+= -Onot -H16m
 rename/ParseUnfolding_HC_OPTS 	+= -Onot -H30m
 ifeq "$(Ghc2_0)" "YES"
-rename/ParseIface_HC_OPTS       += -fno-warn-incomplete-patterns -fno-warn-overlapped-patterns
-rename/ParseType_HC_OPTS        += -fno-warn-incomplete-patterns -fno-warn-overlapped-patterns
-rename/ParseUnfolding_HC_OPTS   += -fno-warn-incomplete-patterns -fno-warn-overlapped-patterns
+rename/ParseIface_HC_OPTS       += -fno-warn-incomplete-patterns
+rename/ParseType_HC_OPTS        += -fno-warn-incomplete-patterns
+rename/ParseUnfolding_HC_OPTS   += -fno-warn-incomplete-patterns
 endif
 
 ifeq "$(TARGETPLATFORM)" "hppa1.1-hp-hpux9"
@@ -221,6 +221,11 @@ utils/FastString_HC_OPTS	= -fvia-C -monly-3-regs
 utils/StringBuffer_HC_OPTS	= -fvia-C
 utils/Digraph_HC_OPTS		= -fglasgow-exts -fvia-C
 
+# optimiser misbehaving in 0.29, occurrence analyser fails to terminate when
+# compiling lib/required/Time.lhs
+ifeq "$(Ghc2_0)" "NO"
+simplCore/OccurAnal_HC_OPTS	= -Onot
+endif
 
 # ----------------------------------------------------------------------------
 #		C compilations
diff --git a/ghc/lib/Makefile b/ghc/lib/Makefile
index 0bb3945fed2503b0e2ff5155cd0d7dd0527a761d..62e5c3bd36db2283324e62ab97d2986149642b8d 100644
--- a/ghc/lib/Makefile
+++ b/ghc/lib/Makefile
@@ -10,6 +10,8 @@
 TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
+WAYS=$(GhcLibWays)
+
 ifeq "$(way)" ""
 SUBDIRS = cbits
 ifeq ($(IncludeTestDirsInBuild),YES)
diff --git a/ghc/mk/paths.mk b/ghc/mk/paths.mk
index 0b73d49fa61c3c170668acf902a4b08216a5ab78..3a69dd0d8e9bdd1271fc605b6291fef85bca312b 100644
--- a/ghc/mk/paths.mk
+++ b/ghc/mk/paths.mk
@@ -13,9 +13,6 @@ PROJECTPATCHLEVEL=$(GhcProjectPatchLevel)
 #HC			= $(WithGhcHc)
 HaskellCompilerType	= $(WithGhcHcType)
 
-# What ways to build the RTS+libs
-WAYS=$(GhcLibWays)
-
 GCap=-optc-DGCap
 #GC2s=-optc-DGC2s
 #GC1s=-optc-DGC1s
diff --git a/ghc/runtime/Makefile b/ghc/runtime/Makefile
index fe0aa56edd3b10fa4b16363f57934c1ea8c072a7..23e7ac4f7039fc8a3a8ddeb1f1a4284cc9655743 100644
--- a/ghc/runtime/Makefile
+++ b/ghc/runtime/Makefile
@@ -1,5 +1,5 @@
 #-----------------------------------------------------------------------------
-# $Id: Makefile,v 1.9 1997/08/25 21:32:14 sof Exp $
+# $Id: Makefile,v 1.10 1997/09/05 09:16:28 simonm Exp $
 
 #  This is the Makefile for the runtime-system stuff.
 #  This stuff is written in C (and cannot be written in Haskell).
@@ -29,6 +29,8 @@ TOP=..
 DoingRTS=YES
 include $(TOP)/mk/boilerplate.mk
 
+WAYS=$(GhcLibWays)
+
 #
 # A general rule for the grand mk setup is that in a build tree, only
 # directories that don't have any subdirs containing Makefiles are built
diff --git a/ghc/utils/Makefile b/ghc/utils/Makefile
index edb0ecee8e4ca6b2fee0a579e01198f09a5c9780..5b0748236c70073d5f110e728ac98fe42134be7c 100644
--- a/ghc/utils/Makefile
+++ b/ghc/utils/Makefile
@@ -1,12 +1,6 @@
 TOP=..
 include $(TOP)/mk/boilerplate.mk
 
-#
-# No ways stuff in here (and further below), please
-#
-override WAYS=
-export WAYS=
-
 ifneq "$(BIN_DIST_NAME)" ""
 # We're doing a binary-dist, descend into a subset of the dirs.
 SUBDIRS = hp2ps hscpp hstags mkdependHS stat2resid unlit
diff --git a/ghc/utils/hp2ps/Makefile b/ghc/utils/hp2ps/Makefile
index ce02c5ee4e400d446ff26bcc15c15ffa6c8a66e0..521c2a8a4e4b970452858b8bd8aef884cc53e533 100644
--- a/ghc/utils/hp2ps/Makefile
+++ b/ghc/utils/hp2ps/Makefile
@@ -1,6 +1,5 @@
 TOP=../..
 include $(TOP)/mk/boilerplate.mk
-override WAYS=
 
 C_SRCS  = $(wildcard *.c)
 H_SRCS  = $(wildcard *.h)
diff --git a/ghc/utils/hscpp/Makefile b/ghc/utils/hscpp/Makefile
index ba69ac64a0265b324eee19f5d20efef25787ed24..cfd508278942c638de8122875ec8792069b91d70 100644
--- a/ghc/utils/hscpp/Makefile
+++ b/ghc/utils/hscpp/Makefile
@@ -1,6 +1,5 @@
 TOP=../..
 include $(TOP)/mk/boilerplate.mk
-override WAYS=
 
 SCRIPT_PROG=hscpp
 SCRIPT_OBJS=hscpp.prl
diff --git a/ghc/utils/hstags/Makefile b/ghc/utils/hstags/Makefile
index 56ba3b105d5ef711675668b0e7c264fb32865810..3653ec3ee8566d411c1048c0af8526847c30a8b0 100644
--- a/ghc/utils/hstags/Makefile
+++ b/ghc/utils/hstags/Makefile
@@ -1,9 +1,6 @@
 TOP=../..
 include $(TOP)/mk/boilerplate.mk
 
-# No ways
-override WAYS=
-
 # Note: might be overridden from cmd-line (see install rule below)
 INSTALLING=0
 
diff --git a/ghc/utils/mkdependHS/Makefile b/ghc/utils/mkdependHS/Makefile
index 83b8de1f0a4f3ef4b0dd747431eec3e14aff2c86..126581b3ed00cdf7d744c5149385f50bf27f3a0c 100644
--- a/ghc/utils/mkdependHS/Makefile
+++ b/ghc/utils/mkdependHS/Makefile
@@ -2,8 +2,6 @@ TOP=../..
 include $(TOP)/mk/boilerplate.mk
 INSTALLING=0
 
-override WAYS=
-
 boot :: all
 
 SCRIPT_PROG=mkdependHS
diff --git a/ghc/utils/parallel/Makefile b/ghc/utils/parallel/Makefile
index b2ebf84c451481a671647ec216ea35f79072c030..094c5cbba1f470bdec8297169381df3db0d103c0 100644
--- a/ghc/utils/parallel/Makefile
+++ b/ghc/utils/parallel/Makefile
@@ -1,9 +1,6 @@
 TOP=../..
 include $(TOP)/mk/boilerplate.mk
 
-# Ways? what ways?
-WAYS=
-
 PERL_PROGS = \
   grs2gr gr2qp qp2ps ghc-fool-sort ghc-unfool-sort gr2pe gr2java \
   qp2ap gr2RTS RTS2gran gran-extr gp-ext-imp tf avg-RTS SPLIT \
diff --git a/ghc/utils/stat2resid/Makefile b/ghc/utils/stat2resid/Makefile
index e8da1026d60524e9cbba98103d1888aa07dbd59c..4b3fad14a7f259a0251e898e3c6aa6942ef8c3df 100644
--- a/ghc/utils/stat2resid/Makefile
+++ b/ghc/utils/stat2resid/Makefile
@@ -1,9 +1,9 @@
 #-----------------------------------------------------------------------------
-# $Id: Makefile,v 1.7 1997/09/03 23:29:20 sof Exp $
+# $Id: Makefile,v 1.8 1997/09/05 09:16:34 simonm Exp $
 
 TOP=../..
 include $(TOP)/mk/boilerplate.mk
-override WAYS=
+
 DYN_LOADABLE_BITS = \
 	parse-gcstats.prl \
 	process-gcstats.prl
diff --git a/ghc/utils/ugen/Makefile b/ghc/utils/ugen/Makefile
index f1ed1b13034f7336118989c6c328b1b4df8a765f..fcc834f757e6e9a7a59d81fc6ac8d338c2703c6e 100644
--- a/ghc/utils/ugen/Makefile
+++ b/ghc/utils/ugen/Makefile
@@ -1,9 +1,8 @@
 #-----------------------------------------------------------------------------
-# $Id: Makefile,v 1.5 1997/09/03 23:28:47 sof Exp $
+# $Id: Makefile,v 1.6 1997/09/05 09:16:35 simonm Exp $
 
 TOP=../..
 include $(TOP)/mk/boilerplate.mk
-override WAYS=
 
 YACC_OPTS += -d
 C_SRCS = syntax.tab.c lex.c id.c tree.c yyerror.c gen.c main.c
diff --git a/ghc/utils/unlit/Makefile b/ghc/utils/unlit/Makefile
index a23895cf87656e0639a5abd9c187ed878656279e..943a23ff97378e732f4ba19d18fa2827494b8696 100644
--- a/ghc/utils/unlit/Makefile
+++ b/ghc/utils/unlit/Makefile
@@ -1,6 +1,5 @@
 TOP=../..
 include $(TOP)/mk/boilerplate.mk
-override WAYS=
 
 C_SRCS=unlit.c
 C_PROG=unlit