summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lynagh <igloo@earth.li>2010-04-24 18:18:23 +0000
committerIan Lynagh <igloo@earth.li>2010-04-24 18:18:23 +0000
commit85f096f8051d4a5c20ac36c1b8866007ad4146c3 (patch)
tree9e31482f67a0f28827edfb2b81784747352dae7a
parent5a6c2ce786ec8daf2e63f08513d17496414c18f2 (diff)
downloadhaskell-85f096f8051d4a5c20ac36c1b8866007ad4146c3.tar.gz
Make sure all the clean rules are always included
In particular, this fixes a problem where stage3 bits weren't being cleaned
-rw-r--r--compiler/ghc.mk18
-rw-r--r--ghc/ghc.mk17
-rw-r--r--rules/build-package.mk32
-rw-r--r--rules/build-prog.mk15
4 files changed, 47 insertions, 35 deletions
diff --git a/compiler/ghc.mk b/compiler/ghc.mk
index 48554db88f..9d1a2d9dff 100644
--- a/compiler/ghc.mk
+++ b/compiler/ghc.mk
@@ -439,24 +439,18 @@ compiler_stage1_SplitObjs = NO
compiler_stage2_SplitObjs = NO
compiler_stage3_SplitObjs = NO
-# For now, bindists always use stage 2
-ifneq "$(BINDIST)" "YES"
-# stage 1 is enabled unless $(stage) is set to something other than 1
-ifeq "$(filter-out 1,$(stage))" ""
-$(eval $(call build-package,compiler,stage1,0))
+ifeq "$(stage)" "1"
+compiler_stage2_NOT_NEEDED = YES
endif
+ifneq "$(stage)" "3"
+compiler_stage3_NOT_NEEDED = YES
endif
-# stage 2 is enabled unless $(stage) is set to something other than 2
-ifeq "$(filter-out 2,$(stage))" ""
+$(eval $(call build-package,compiler,stage1,0))
$(eval $(call build-package,compiler,stage2,1))
-endif
+$(eval $(call build-package,compiler,stage3,2))
ifneq "$(BINDIST)" "YES"
-# stage 3 has to be requested explicitly with stage=3
-ifeq "$(stage)" "3"
-$(eval $(call build-package,compiler,stage3,2))
-endif
compiler_stage2_TAGS_HC_OPTS = -package ghc
$(eval $(call tags-package,compiler,stage2))
diff --git a/ghc/ghc.mk b/ghc/ghc.mk
index 1f0b287ca5..4c98b3e886 100644
--- a/ghc/ghc.mk
+++ b/ghc/ghc.mk
@@ -103,20 +103,15 @@ define ghc_stage$(INSTALL_GHC_STAGE)_INSTALL_SHELL_WRAPPER_EXTRA
echo 'executablename="$$exedir/ghc"' >> "$(WRAPPER)"
endef
-# stage 1 is enabled unless $(stage) is set to something other than 1
-ifeq "$(filter-out 1,$(stage))" ""
-$(eval $(call build-prog,ghc,stage1,0))
+ifeq "$(stage)" "1"
+ghc_stage2_NOT_NEEDED = YES
endif
-
-# stage 2 is enabled unless $(stage) is set to something other than 2
-ifeq "$(filter-out 2,$(stage))" ""
-$(eval $(call build-prog,ghc,stage2,1))
+ifneq "$(stage)" "3"
+ghc_stage3_NOT_NEEDED = YES
endif
-
-# stage 3 has to be requested explicitly with stage=3
-ifeq "$(stage)" "3"
+$(eval $(call build-prog,ghc,stage1,0))
+$(eval $(call build-prog,ghc,stage2,1))
$(eval $(call build-prog,ghc,stage3,2))
-endif
ifneq "$(BINDIST)" "YES"
diff --git a/rules/build-package.mk b/rules/build-package.mk
index f40d0fcf25..f8c48134f6 100644
--- a/rules/build-package.mk
+++ b/rules/build-package.mk
@@ -37,12 +37,33 @@ ifeq "$$(findstring $3,0 1 2)" ""
$$(error $1/$2: stage argument to build-package should be 0, 1, or 2)
endif
+$(call clean-target,$1,$2,$1/$2)
+
+distclean : clean_$1_$2_config
+
+maintainer-clean : distclean
+
+.PHONY: clean_$1_$2_config
+clean_$1_$2_config:
+ "$$(RM)" $$(RM_OPTS) $1/config.log $1/config.status $1/include/Hs*Config.h
+ "$$(RM)" $$(RM_OPTS) -r $1/autom4te.cache
+
+ifneq "$$($1_$2_NOT_NEEDED)" "YES"
+$$(eval $$(call build-package-helper,$1,$2,$3))
+endif
+endef
+
+
+define build-package-helper
+# $1 = dir
+# $2 = distdir
+# $3 = GHC stage to use (0 == bootstrapping compiler)
+
# We don't install things compiled by stage 0, so no need to put them
# in the bindist.
ifneq "$$(BINDIST) $3" "YES 0"
$(call all-target,$1,all_$1_$2)
-$(call clean-target,$1,$2,$1/$2)
# This give us things like
# all_libraries: all_libraries/base_dist-install
ifneq "$$($1_$2_GROUP)" ""
@@ -57,15 +78,6 @@ check_$1: $$(GHC_CABAL_INPLACE)
$$(GHC_CABAL_INPLACE) check $1
endif
-distclean : clean_$1_$2_config
-
-maintainer-clean : distclean
-
-.PHONY: clean_$1_$2_config
-clean_$1_$2_config:
- "$$(RM)" $$(RM_OPTS) $1/config.log $1/config.status $1/include/Hs*Config.h
- "$$(RM)" $$(RM_OPTS) -r $1/autom4te.cache
-
# --- CONFIGURATION
$(call package-config,$1,$2,$3)
diff --git a/rules/build-prog.mk b/rules/build-prog.mk
index b88a2bb557..ebc899052f 100644
--- a/rules/build-prog.mk
+++ b/rules/build-prog.mk
@@ -34,10 +34,21 @@ ifeq "$$(findstring $3,0 1 2)" ""
$$(error $1/$2: stage argument to build-prog should be 0, 1, or 2)
endif
-$(call all-target,$1,all_$1_$2)
-
$(call clean-target,$1,$2,$1/$2)
+ifneq "$$($1_$2_NOT_NEEDED)" "YES"
+$$(eval $$(call build-prog-helper,$1,$2,$3))
+endif
+endef
+
+
+define build-prog-helper
+# $1 = dir
+# $2 = distdir
+# $3 = GHC stage to use (0 == bootstrapping compiler)
+
+$(call all-target,$1,all_$1_$2)
+
$(call package-config,$1,$2,$3)
ifeq "$$($1_USES_CABAL)" "YES"