+ifeq "$(findstring $(phase),0 1 2 3)" ""
+phase_3_done = YES
+endif
+
+includes_dist-derivedconstants_CONFIGURE_PHASE = 0
+includes_dist-ghcconstants_CONFIGURE_PHASE = 0
+
+# We do these first, as making the sources for some later
+# packages needs them, and we need the sources before we can
+# work out dependencies
+utils/hsc2hs_dist_CONFIGURE_PHASE = 0
+utils/unlit_dist_CONFIGURE_PHASE = 0
+utils/genprimopcode_dist_CONFIGURE_PHASE = 0
+
+# Then the bootlibs
+$(foreach lib,$(STAGE0_PACKAGES),$(eval \
+ libraries/$(lib)_dist-boot_CONFIGURE_PHASE = 1))
+compiler_stage1_CONFIGURE_PHASE = 1
+ghc_stage1_CONFIGURE_PHASE = 1
+driver/ghc_dist_CONFIGURE_PHASE = 1
+driver/ghci_dist_CONFIGURE_PHASE = 1
+driver/haddock_dist_CONFIGURE_PHASE = 1
+utils/touchy_dist_CONFIGURE_PHASE = 1
+
+# In phase 2, the phase 1 things actually get built
+
+# Finally, the stage1 compiler is used to make the dependencies for
+# everything else, so we can now build the rest.
+compiler_stage2_CONFIGURE_PHASE = 3
+compiler_stage3_CONFIGURE_PHASE = 3
+ghc_stage2_CONFIGURE_PHASE = 3
+ghc_stage3_CONFIGURE_PHASE = 3