+clean distclean:: clean.stage.$(stage)
+endif
+
+clean.stage.%:
+ -$(CABAL) clean --distpref dist-stage$*
+ $(RM) -rf stage$*-inplace
+
+CONFIGURE_FLAGS_STAGE1 += --flags=-ghci
+
+ifeq "$(GhcWithInterpreter)" "YES"
+CONFIGURE_FLAGS_STAGE2 += --flags=ghci
+else
+CONFIGURE_FLAGS_STAGE2 += --flags=-ghci
+endif
+
+ifeq "$(GhcProfiled)" "YES"
+CONFIGURE_FLAGS_STAGE2 += --enable-executable-profiling
+endif
+ifeq "$(GhcDebugged)" "YES"
+CONFIGURE_FLAGS_STAGE2 += --ghc-option=-debug
+endif
+ifeq "$(GhcThreaded)" "YES"
+# Use threaded RTS with GHCi, so threads don't get blocked at the prompt.
+CONFIGURE_FLAGS_STAGE2 += --ghc-option=-threaded
+endif
+
+ifeq "$(BuildSharedLibs)" "YES"
+CONFIGURE_FLAGS_STAGE2 += --ghc-option=-dynamic
+endif
+
+CONFIGURE_FLAGS_STAGE3 = $(CONFIGURE_FLAGS_STAGE2)
+
+CONFIGURE_FLAGS_STAGE1 += $(USE_BOOT_CONFIGURE_FLAGS)
+CONFIGURE_FLAGS_STAGE2 += $(USE_STAGE1_CONFIGURE_FLAGS)
+CONFIGURE_FLAGS_STAGE3 += $(USE_STAGE2_CONFIGURE_FLAGS)
+
+# Allow EXTRA_HC_OPTS to be used from the command line to add options
+# when building (e.g. -v)
+BUILD_FLAGS=$(patsubst %, --ghc-option=%, $(EXTRA_HC_OPTS))
+
+# XXX In stage2+ we should really use the inplace ghc-pkg
+# It works because installPackage doesn't actually use ghc-pkg, as there's
+# no library to register
+
+ifeq "$(stage)" "1"
+ifeq "$(ghc_ge_609)" "NO"
+# GHC 6.9+ can handle cross-package recompilation checking, but
+# we don't rely on the bootstrapping compiler being able to do this.
+TOUCH_MAIN = $(RM) dist-stage1/build/ghc/ghc-tmp/Main.o
+endif