Make "make clean" in compiler/ only clean the stage we want to clean
authorIan Lynagh <igloo@earth.li>
Sun, 10 Aug 2008 14:20:26 +0000 (14:20 +0000)
committerIan Lynagh <igloo@earth.li>
Sun, 10 Aug 2008 14:20:26 +0000 (14:20 +0000)
If you "make clean" in the root then we still clean all stages

compiler/Makefile
mk/recurse.mk

index c0f703e..ca3f96e 100644 (file)
@@ -56,12 +56,6 @@ stage3 ::
        $(MAKE) stage=3
 
 clean distclean::
        $(MAKE) stage=3
 
 clean distclean::
-       -$(CABAL) clean --distpref dist-stage1
-       -$(CABAL) clean --distpref dist-stage2
-       -$(CABAL) clean --distpref dist-stage3
-       $(RM) -f Makefile-stage1
-       $(RM) -f Makefile-stage2
-       $(RM) -f Makefile-stage3
        $(RM) -f prelude/primops.txt
        $(RM) -f $(PRIMOP_BITS)
        $(RM) -f $(CONFIG_HS)
        $(RM) -f prelude/primops.txt
        $(RM) -f $(PRIMOP_BITS)
        $(RM) -f $(CONFIG_HS)
@@ -69,6 +63,16 @@ clean distclean::
        $(RM) -rf stage1 stage2plus
        $(RM) -f $(STAGE3_PACKAGE_CONF)
 
        $(RM) -rf stage1 stage2plus
        $(RM) -f $(STAGE3_PACKAGE_CONF)
 
+ifeq "$(CLEAN_ALL_STAGES)" "YES"
+clean distclean:: clean.stage.1 clean.stage.2 clean.stage.3
+else
+clean distclean:: clean.stage.$(stage)
+endif
+
+clean.stage.%:
+       -$(CABAL) clean --distpref dist-stage$*
+       $(RM) -f Makefile-stage$*
+
 CONFIGURE_FLAGS_STAGE1 += --flags=stage1
 CONFIGURE_FLAGS_STAGE2 += --flags=-stage1
 
 CONFIGURE_FLAGS_STAGE1 += --flags=stage1
 CONFIGURE_FLAGS_STAGE2 += --flags=-stage1
 
index 906b1f0..2bb370d 100644 (file)
@@ -76,7 +76,7 @@ $(ALL_TARGET) docs runtests $(BOOT_TARGET) TAGS clean distclean mostlyclean main
          echo "== $(MAKE) $@ $(MFLAGS);"; \
          echo " in $(shell pwd)/$$i"; \
          echo "------------------------------------------------------------------------"; \
          echo "== $(MAKE) $@ $(MFLAGS);"; \
          echo " in $(shell pwd)/$$i"; \
          echo "------------------------------------------------------------------------"; \
-         $(MAKE) --no-print-directory -C $$i $(MFLAGS) $@; \
+         $(MAKE) --no-print-directory -C $$i $(MFLAGS) $@ CLEAN_ALL_STAGES=YES; \
          if [ $$? -eq 0 -o $$x_on_err -eq 0 ]; \
              then echo "Finished making $@ in $$i": $$?; \
              else echo "Failed making $@ in $$i": $$?; exit 1; \
          if [ $$? -eq 0 -o $$x_on_err -eq 0 ]; \
              then echo "Finished making $@ in $$i": $$?; \
              else echo "Failed making $@ in $$i": $$?; exit 1; \