X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=Makefile;h=73443f6cd42253fe57cbf613ef434ecefa514502;hp=b89257fe3804d37dc0fbb8b21259a616cc5406fa;hb=276585028d51a2516a31b91a91a1f4bba5c9f8ba;hpb=c72f2cb1f7eb299f9289b7a33233174d470cfa0f diff --git a/Makefile b/Makefile index b89257f..73443f6 100644 --- a/Makefile +++ b/Makefile @@ -98,6 +98,7 @@ endif endif stage1 : $(GCC_LIB_DEP) check-packages + $(MAKE) -C utils mostlyclean $(MAKE) -C utils/mkdependC boot @case '${MFLAGS}' in *-[ik]*) x_on_err=0;; *-r*[ik]*) x_on_err=0;; *) x_on_err=1;; esac; \ for i in $(SUBDIRS_BUILD); do \ @@ -119,9 +120,23 @@ stage1 : $(GCC_LIB_DEP) check-packages $(MAKE) -C libraries boot $(MAKE) -C libraries all +# When making distributions (i.e., whether with binary-dist or using the +# vanilla install target to create an installer package), we can have problems +# if some things (e.g. ghc-pkg) are compiled with the bootstrapping compiler +# and some (e.g. the stage 2 compiler) with the stage1 compiler. See #1860 for +# an example. Thus, we explicitly build a second version with the stage 1 +# compiler of all utils that get installed and of all extra support binaries +# includes in binary dists. stage2 : check-packages + $(MAKE) -C utils mostlyclean + $(MAKE) -C utils stage=2 $(MAKE) -C compiler boot stage=2 $(MAKE) -C compiler stage=2 + $(RM) -f libraries/ifBuildable/ifBuildable + $(MAKE) -C libraries stage=2 ifBuildable/ifBuildable + $(RM) -f libraries/installPackage/installPackage + $(MAKE) -C libraries stage=2 installPackage/installPackage + stage3 : check-packages $(MAKE) -C compiler boot stage=3 @@ -259,21 +274,6 @@ binary-dist:: -rm -rf $(BIN_DIST_DIR) -$(RM) $(BIN_DIST_TARBALL) -# When making bindists, we can have problems if some things (e.g. ghc-pkg) -# are compiled with the bootstrapping compiler and some (e.g. the stage 2 -# compiler) with the stage1 compiler. See #1860 for an example. -# Thus we rebuild the utils with stage 1 here. This is a bit unpleasant, -# as binary-dist really shouldn't actually build anything, but it works. -# We need to do the same for utilities used during library package installation. -binary-dist:: - $(MAKE) -C utils clean - $(MAKE) -C utils UseStage1=YES boot - $(MAKE) -C utils UseStage1=YES - $(RM) -f libraries/ifBuildable/ifBuildable - $(MAKE) -C libraries UseStage1=YES ifBuildable/ifBuildable - $(RM) -f libraries/installPackage/installPackage - $(MAKE) -C libraries UseStage1=YES installPackage/installPackage - ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32" binary-dist::