summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lynagh <igloo@earth.li>2008-08-10 14:20:26 +0000
committerIan Lynagh <igloo@earth.li>2008-08-10 14:20:26 +0000
commit5a82864902fc01cf8eee847fcf4ee88e74aa535d (patch)
tree8aec458db31e0092bbd78d8c327b1e7616a27b5b
parentade868e91748767177bad2d94aef6b43f5893ad9 (diff)
downloadhaskell-5a82864902fc01cf8eee847fcf4ee88e74aa535d.tar.gz
Make "make clean" in compiler/ only clean the stage we want to clean
If you "make clean" in the root then we still clean all stages
-rw-r--r--compiler/Makefile16
-rw-r--r--mk/recurse.mk2
2 files changed, 11 insertions, 7 deletions
diff --git a/compiler/Makefile b/compiler/Makefile
index c0f703ebea..ca3f96e83f 100644
--- a/compiler/Makefile
+++ b/compiler/Makefile
@@ -56,12 +56,6 @@ stage3 ::
$(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)
@@ -69,6 +63,16 @@ clean distclean::
$(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
diff --git a/mk/recurse.mk b/mk/recurse.mk
index 906b1f04b4..2bb370deeb 100644
--- a/mk/recurse.mk
+++ b/mk/recurse.mk
@@ -76,7 +76,7 @@ $(ALL_TARGET) docs runtests $(BOOT_TARGET) TAGS clean distclean mostlyclean main
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; \