diff options
author | Ian Lynagh <igloo@earth.li> | 2011-01-22 19:09:28 +0000 |
---|---|---|
committer | Ian Lynagh <igloo@earth.li> | 2011-01-22 19:09:28 +0000 |
commit | 295016c3c0aa1f407436136e39ababf2dc8b50c6 (patch) | |
tree | 1979e477cbd3b789acf723f6c871b15bdbcc1d36 /ghc.mk | |
parent | d17afd1e4aa5c7a0992e5ac5b2cda325992706a8 (diff) | |
download | haskell-295016c3c0aa1f407436136e39ababf2dc8b50c6.tar.gz |
Simplify the build system, and remove 2 phases
From
http://hackage.haskell.org/trac/ghc/wiki/Building/Architecture/Idiom/PhaseOrdering
Phase 0:
Includes: package-data.mk files for things built by the
bootstrapping compiler.
Builds: the dependency files for hsc2hs and genprimopcode. We need
to do this now, as hsc2hs needs to be buildable in phase 1's
includes (so that we can make the hpc library's .hs source
files, which in turn is necessary for making its dependency
files), and genprimopcode needs to be buildable in phase 1's
includes (so that we can make the primop-*.hs-incl files,
which are sources for the stage1 compiler library, and thus
necessary for making its dependency files).
Phase 1:
Includes: dependency files for things built by the bootstrapping
compiler.
Builds: package-data.mk files for everything else. Note that this
requires configuring the packages, which means telling cabal
which ghc to use, and thus the stage1 compiler gets built
during this phase.
Phase "":
Includes: dependency files for everything else.
Builds: Everything else.
Diffstat (limited to 'ghc.mk')
-rw-r--r-- | ghc.mk | 78 |
1 files changed, 13 insertions, 65 deletions
@@ -222,6 +222,7 @@ include rules/package-config.mk # Building dependencies include rules/build-dependencies.mk +include rules/include-dependencies.mk # ----------------------------------------------------------------------------- # Build package-data.mk files @@ -603,71 +604,6 @@ BUILD_DIRS += \ $(patsubst %, libraries/%, $(PACKAGES_STAGE2)) endif -# ----------------------------------------------------------------------------- -# Phase handling - -phase_0_or_later = YES -ifeq "$(findstring $(phase),0)" "" -phase_0_done = YES -phase_1_or_later = YES -endif -ifeq "$(findstring $(phase),0 1)" "" -phase_1_done = YES -phase_2_or_later = YES -endif -ifeq "$(findstring $(phase),0 1 2)" "" -phase_2_done = YES -phase_3_or_later = YES -endif -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 - -$(foreach lib,$(PACKAGES) $(PACKAGES_STAGE2),$(eval \ - libraries/$(lib)_dist-install_CONFIGURE_PHASE = 3)) - -utils/hp2ps_dist_CONFIGURE_PHASE = 3 -utils/genapply_dist_CONFIGURE_PHASE = 3 -utils/haddock_dist_CONFIGURE_PHASE = 3 -utils/hsc2hs_dist-install_CONFIGURE_PHASE = 3 -utils/ghc-pkg_dist-install_CONFIGURE_PHASE = 3 -utils/hpc_dist_CONFIGURE_PHASE = 3 -utils/runghc_dist_CONFIGURE_PHASE = 3 -utils/ghctags_dist_CONFIGURE_PHASE = 3 -utils/ghc-pwd_dist_CONFIGURE_PHASE = 3 -utils/ghc-cabal_dist-install_CONFIGURE_PHASE = 3 -utils/mkUserGuidePart_dist_CONFIGURE_PHASE = 3 -utils/compare_sizes_dist_CONFIGURE_PHASE = 3 - # ---------------------------------------------- # Actually include all the sub-ghc.mk's @@ -1256,3 +1192,15 @@ bootstrapping-files: includes/GHCConstants.h .DELETE_ON_ERROR: +# ----------------------------------------------------------------------------- +# Numbered phase targets + +.PHONY: phase_0_builds +phase_0_builds: $(utils/hsc2hs_dist_depfile_haskell) +phase_0_builds: $(utils/hsc2hs_dist_depfile_c_asm) +phase_0_builds: $(utils/genprimopcode_dist_depfile_haskell) +phase_0_builds: $(utils/genprimopcode_dist_depfile_c_asm) + +.PHONY: phase_1_builds +phase_1_builds: $(PACKAGE_DATA_MKS) + |