-install_dirs ::
- $(MKDIRHIER) $(INSTBINDIR_GHC)
- $(MKDIRHIER) $(INSTSCRIPTDIR_GHC)
- $(MKDIRHIER) $(INSTLIBDIR_GHC)
- $(MKDIRHIER) $(INSTLIBDIR_GHC)/includes
- $(MKDIRHIER) $(INSTDATADIR_GHC)
- $(MKDIRHIER) $(INSTDATADIR_GHC)/includes
- $(MKDIRHIER) $(INSTDATADIR_GHC)/imports
+stage3 ::
+ $(MAKE) stage=3
+
+clean distclean::
+ -$(CABAL) clean --distpref dist-stage1
+ -$(CABAL) clean --distpref dist-stage2
+ -$(CABAL) clean --distpref dist-stage3
+ $(RM) -rf stage1-inplace
+ $(RM) -rf stage2-inplace
+ $(RM) -rf stage3-inplace
+
+# XXX This should be defined somewhere more central
+INPLACE_DATA_DIR = $(FPTOOLS_TOP_ABS)/inplace-datadir
+
+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"
+# 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