Don't require the library ghc.mk files in order to clean
authorIan Lynagh <igloo@earth.li>
Fri, 15 May 2009 23:15:16 +0000 (23:15 +0000)
committerIan Lynagh <igloo@earth.li>
Fri, 15 May 2009 23:15:16 +0000 (23:15 +0000)
Makefile
ghc.mk

index d0f52b9..af669d7 100644 (file)
--- 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 f251635..f77f9eb 100644 (file)
--- 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