X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=utils%2FMakefile;h=881d7d50b9076e3de9f24b9999d7964ba0ce5186;hp=9416d7728bdb54b78d66eda6c6b71dacaf8b322f;hb=0434f5bf9a2712a99e9e6c99d67991a3f09af91d;hpb=0065d5ab628975892cea1ec7303f968c3338cbe1 diff --git a/utils/Makefile b/utils/Makefile index 9416d77..881d7d5 100644 --- a/utils/Makefile +++ b/utils/Makefile @@ -1,29 +1,34 @@ TOP=.. include $(TOP)/mk/boilerplate.mk -ifneq "$(BIN_DIST_NAME)" "" +ifeq "$(DOING_BIN_DIST)" "YES" # We're doing a binary-dist, descend into a subset of the dirs. -SUBDIRS = hp2ps unlit +SUBDIRS = mkdirhier hp2ps parallel unlit else ifeq "$(BootingFromHc)" "YES" -SUBDIRS = mkdependC mkdirhier runstdtest genapply genprimopcode ghc-pkg unlit +SUBDIRS = mkdependC mkdirhier runstdtest genapply genprimopcode unlit else -SUBDIRS = mkdependC mkdirhier runstdtest ghc-pkg hasktags hp2ps hsc2hs lndir \ - parallel prof unlit genprimopcode genapply runghc +SUBDIRS = mkdependC mkdirhier runstdtest hp2ps \ + parallel unlit genprimopcode genapply endif +#ifneq "$(TARGETPLATFORM)" "i386-unknown-mingw32" +## lndir doesn't build on Windows +#SUBDIRS += lndir +#endif endif ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32" SUBDIRS += touchy endif +# XXX pwd and lndir building disabled for now + # Utils that we don't build by default: # nofib-analyse # Utils that are old and/or bitrotted: # stat2resid # debugNCG -# ext-core # genargs # heap-view # pvm @@ -37,3 +42,78 @@ endif # a Haskell compiler and if you want it. include $(TOP)/mk/target.mk + +# genprimopcode is needed to boot in ghc/compiler... +ifneq "$(BootingFromHc)" "YES" +boot :: + $(MAKE) -C genprimopcode +endif + +############################################ + +# The utils may be built with the bootstrapping compiler, for use during +# the build, or with the stage2 compiler, for installing. Some of them +# are built with both; we can't install the utils built with the +# bootstrapping compiler as they may use different versions of C +# libraries. The reason we use stage2 rather than stage1 is that some +# utils, e.g. haddock, need the GHC API package. + +WITH_BOOTSTRAPPING_COMPILER = installPackage ghc-pkg hsc2hs hpc + +WITH_STAGE2 = installPackage ghc-pkg hasktags runghc hpc pwd haddock +ifneq "$(NO_INSTALL_HSC2HS)" "YES" +WITH_STAGE2 += hsc2hs +endif + +# sort removes duplicates - we don't actually care about the order +WITH_EITHER = $(sort $(WITH_BOOTSTRAPPING_COMPILER) $(WITH_STAGE2)) + +# We need to build pwd with stage 2, as it goes in bindists, but we +# don't actually want to install it. Likewise the installPackage +# program. +DO_NOT_INSTALL = pwd installPackage + +binary-dist: $(foreach P,$(WITH_STAGE2),binary-dist.$P) +ifeq "$(WHERE_AM_I)" "" + echo "I don't know where I am" >&2 + exit 1 +endif + echo $(WHERE_AM_I)/Makefile >> $(BIN_DIST_LIST) + set -e; for d in $(SUBDIRS); do $(MAKE) -C $$d binary-dist WHERE_AM_I=$(WHERE_AM_I)/$$d; done + +clean:: $(foreach P,$(WITH_EITHER),clean.$P) + +distclean:: $(foreach P,$(WITH_EITHER),distclean.$P) + +with-bootstrapping-compiler: \ + $(foreach P,$(WITH_BOOTSTRAPPING_COMPILER),with-bootstrapping-compiler.$P) + +with-stage-2: $(foreach P,$(WITH_STAGE2),with-stage-2.$P) + $(MAKE) -C haddock install-inplace + +install:: $(foreach P,$(filter-out $(DO_NOT_INSTALL),$(WITH_STAGE2)),install.$P) + +$(foreach P,$(WITH_EITHER),clean.$P): \ +clean.%: + $(MAKE) -C $* clean + +$(foreach P,$(WITH_EITHER),distclean.$P): \ +distclean.%: + $(MAKE) -C $* distclean + +$(foreach P,$(WITH_BOOTSTRAPPING_COMPILER),with-bootstrapping-compiler.$P): \ +with-bootstrapping-compiler.%: + $(MAKE) -C $* with-bootstrapping-compiler + +$(foreach P,$(WITH_STAGE2),with-stage-2.$P): \ +with-stage-2.%: + $(MAKE) -C $* with-stage-2 + +$(foreach P,$(WITH_STAGE2),install.$P): \ +install.%: + $(MAKE) -C $* install + +$(foreach P,$(WITH_STAGE2),binary-dist.$P): \ +binary-dist.%: + $(MAKE) -C $* binary-dist WHERE_AM_I=$(WHERE_AM_I)/$* +