diff --git a/Makefile b/Makefile index d0f52b93a67f9f6f7be2efeb0fcb007b82a5d785..af669d7f8fb0e793c978f7795b7d6d2d5b328982 100644 --- a/Makefile +++ b/Makefile @@ -43,8 +43,6 @@ endif include mk/custom-settings.mk -# If the package ghc.mk files are missing, generate them. This means that -# repeating 'make maintainer-clean' works. PACKAGE_MK=libraries/base/ghc.mk $(PACKAGE_MK): sh boot-pkgs @@ -67,16 +65,16 @@ $(REALGOALS) all: $(PACKAGE_MK) @echo "===--- finished updating makefiles" $(MAKE) -r --no-print-directory -f ghc.mk $@ -binary-dist: $(PACKAGE_MK) +binary-dist: rm -f bindist-list $(MAKE) -r --no-print-directory -f ghc.mk bindist BINDIST=YES $(MAKE) -r --no-print-directory -f ghc.mk binary-dist -clean distclean maintainer-clean: $(PACKAGE_MK) - $(MAKE) -r --no-print-directory -f ghc.mk $@ +clean distclean maintainer-clean: + $(MAKE) -r --no-print-directory -f ghc.mk $@ CLEANING=YES test ! -d testsuite || $(MAKE) -C testsuite $@ -$(filter clean_%, $(MAKECMDGOALS)) : clean_% : $(PACKAGE_MK) +$(filter clean_%, $(MAKECMDGOALS)) : clean_% : $(MAKE) -r --no-print-directory -f ghc.mk $@ show: $(PACKAGE_MK) diff --git a/ghc.mk b/ghc.mk index f25163588ef58d15194f9a82b8c42b7ea0f122cf..f77f9eb8e1acd793e0a816cce9c649b99cba194f 100644 --- a/ghc.mk +++ b/ghc.mk @@ -134,9 +134,7 @@ show: # ----------------------------------------------------------------------------- # Include subsidiary build-system bits -ifneq "$(findstring clean,$(MAKECMDGOALS))" "" --include mk/config.mk -else +ifeq "$(findstring clean,$(MAKECMDGOALS))" "" include mk/config.mk ifeq "$(ProjectVersion)" "" $(error Please run ./configure first) @@ -483,10 +481,15 @@ endif BUILD_DIRS += \ utils/haddock \ - utils/haddock/doc \ - $(patsubst %, libraries/%, $(PACKAGES)) \ - $(patsubst %, libraries/%, $(PACKAGES_STAGE2)) \ - libraries/dph \ + utils/haddock/doc + +ifneq "$(CLEANING)" "YES" +BUILD_DIRS += \ + $(patsubst %, libraries/%, $(PACKAGES) $(PACKAGES_STAGE2)) \ + libraries/dph +endif + +BUILD_DIRS += \ compiler \ $(GHC_HSC2HS_DIR) \ $(GHC_PKG_DIR) \ @@ -871,6 +874,9 @@ clean : clean_files .PHONY: clean_files clean_files : $(RM) $(CLEAN_FILES) + $(RM) -r $(patsubst %, libraries/%/dist, $(PACKAGES) $(PACKAGES_STAGE2)) + $(RM) -r $(patsubst %, libraries/%/dist-install, $(PACKAGES) $(PACKAGES_STAGE2)) + $(RM) -r $(patsubst %, libraries/%/dist-boot, $(PACKAGES) $(PACKAGES_STAGE2)) distclean : clean $(RM) config.cache config.status config.log mk/config.h mk/stamp-h @@ -882,6 +888,10 @@ distclean : clean $(RM) libraries/process/include/HsProcessConfig.h $(RM) libraries/unix/include/HsUnixConfig.h $(RM) libraries/old-time/include/HsTimeConfig.h + $(RM) $(patsubst %, libraries/%/config.log, $(PACKAGES) $(PACKAGES_STAGE2)) + $(RM) $(patsubst %, libraries/%/config.status, $(PACKAGES) $(PACKAGES_STAGE2)) + $(RM) $(patsubst %, libraries/%/include/Hs*Config.h, $(PACKAGES) $(PACKAGES_STAGE2)) + $(RM) -r $(patsubst %, libraries/%/autom4te.cache, $(PACKAGES) $(PACKAGES_STAGE2)) maintainer-clean : distclean $(RM) configure mk/config.h.in