X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc.mk;h=491f2d138271bdcacd8c8901e4a7b5896ed1697f;hb=428eac5caec93bc48249bcc6a320de43eb28be82;hp=0423b9557aa84d582ca232d30a8718d9f1505596;hpb=682eb17762dcd9d2eefaea86f83fda131eef9597;p=ghc-hetmet.git diff --git a/ghc.mk b/ghc.mk index 0423b95..491f2d1 100644 --- a/ghc.mk +++ b/ghc.mk @@ -27,7 +27,6 @@ # * docs/man/Makefile # * docs/storage-mgmt/Makefile # * docs/vh/Makefile -# * driver/Makefile # * rts/dotnet/Makefile # * utils/Makefile # * GhcProfiled @@ -283,45 +282,52 @@ include rules/bindist.mk # ----------------------------------------------------------------------------- # Building libraries -# XXX generate from $(TOP)/packages -PACKAGES = \ - ghc-prim \ - integer-gmp \ - integer \ - base \ - filepath \ - array \ - bytestring \ - containers - -ifeq "$(Windows)" "YES" -PACKAGES += Win32 -else -PACKAGES += unix -endif - -PACKAGES += \ - old-locale \ - old-time \ - directory \ - process \ - random \ - extensible-exceptions \ - haskell98 \ - hpc \ - pretty \ - syb \ - template-haskell \ - base3-compat \ - Cabal \ - mtl \ - utf8-string - -ifneq "$(Windows)" "YES" -PACKAGES += terminfo -endif +define addPackage # args: $1 = package, $2 = condition + ifneq "$2" "" + ifeq "$$(CLEANING)" "YES" + PACKAGES += $1 + else + ifeq $2 + PACKAGES += $1 + endif + endif + else + PACKAGES += $1 + endif +endef -PACKAGES += haskeline +$(eval $(call addPackage,ghc-prim)) +$(eval $(call addPackage,integer-gmp)) +$(eval $(call addPackage,integer)) +$(eval $(call addPackage,base)) +$(eval $(call addPackage,filepath)) +$(eval $(call addPackage,array)) +$(eval $(call addPackage,bytestring)) +$(eval $(call addPackage,containers)) + +$(eval $(call addPackage,Win32,($$(Windows),YES))) +$(eval $(call addPackage,unix,($$(Windows),NO))) + +$(eval $(call addPackage,old-locale)) +$(eval $(call addPackage,old-time)) +$(eval $(call addPackage,time)) +$(eval $(call addPackage,directory)) +$(eval $(call addPackage,process)) +$(eval $(call addPackage,random)) +$(eval $(call addPackage,extensible-exceptions)) +$(eval $(call addPackage,haskell98)) +$(eval $(call addPackage,hpc)) +$(eval $(call addPackage,pretty)) +$(eval $(call addPackage,syb)) +$(eval $(call addPackage,template-haskell)) +$(eval $(call addPackage,base3-compat)) +$(eval $(call addPackage,Cabal)) +$(eval $(call addPackage,mtl)) +$(eval $(call addPackage,utf8-string)) + +$(eval $(call addPackage,terminfo,($$(Windows),NO))) + +$(eval $(call addPackage,haskeline)) ifneq "$(BootingFromHc)" "YES" PACKAGES_STAGE2 += \ @@ -906,22 +912,33 @@ clean_files : "$(RM)" $(RM_OPTS) $(CLEAN_FILES) .PHONY: clean_libraries +clean_libraries: $(patsubst %,clean_libraries/%_dist-install,$(PACKAGES) $(PACKAGES_STAGE2)) +clean_libraries: $(patsubst %,clean_libraries/%_dist-boot,$(BOOT_PKGS)) + clean_libraries: "$(RM)" $(RM_OPTS) -r $(patsubst %, libraries/%/dist, $(PACKAGES) $(PACKAGES_STAGE2)) - "$(RM)" $(RM_OPTS) -r $(patsubst %, libraries/%/dist-install, $(PACKAGES) $(PACKAGES_STAGE2)) - "$(RM)" $(RM_OPTS) -r $(patsubst %, libraries/%/dist-boot, $(PACKAGES) $(PACKAGES_STAGE2)) "$(RM)" $(RM_OPTS) $(patsubst %, libraries/%/*.buildinfo, $(PACKAGES) $(PACKAGES_STAGE2)) +# We have to define a clean target for each library manually, because the +# libraries/*/ghc.mk files are not included when we're cleaning. +ifeq "$(CLEANING)" "YES" +$(foreach lib,$(PACKAGES) $(PACKAGES_STAGE2),\ + $(eval $(call clean-target,libraries/$(lib),dist-install,libraries/$(lib)/dist-install))) +endif + distclean : clean "$(RM)" $(RM_OPTS) config.cache config.status config.log mk/config.h mk/stamp-h "$(RM)" $(RM_OPTS) mk/config.mk mk/are-validating.mk mk/project.mk + "$(RM)" $(RM_OPTS) mk/config.mk.old mk/project.mk.old "$(RM)" $(RM_OPTS) extra-gcc-opts docs/users_guide/ug-book.xml - "$(RM)" $(RM_OPTS) compiler/ghc.cabal ghc/ghc-bin.cabal + "$(RM)" $(RM_OPTS) compiler/ghc.cabal compiler/ghc.cabal.old + "$(RM)" $(RM_OPTS) ghc/ghc-bin.cabal "$(RM)" $(RM_OPTS) libraries/base/include/HsBaseConfig.h "$(RM)" $(RM_OPTS) libraries/directory/include/HsDirectoryConfig.h "$(RM)" $(RM_OPTS) libraries/process/include/HsProcessConfig.h "$(RM)" $(RM_OPTS) libraries/unix/include/HsUnixConfig.h "$(RM)" $(RM_OPTS) libraries/old-time/include/HsTimeConfig.h + "$(RM)" $(RM_OPTS) $(patsubst %, libraries/%/config.log, $(PACKAGES) $(PACKAGES_STAGE2)) "$(RM)" $(RM_OPTS) $(patsubst %, libraries/%/config.status, $(PACKAGES) $(PACKAGES_STAGE2)) "$(RM)" $(RM_OPTS) $(patsubst %, libraries/%/include/Hs*Config.h, $(PACKAGES) $(PACKAGES_STAGE2))