make repeated 'make distclean' not fail
authorSimon Marlow <marlowsd@gmail.com>
Thu, 14 May 2009 10:56:45 +0000 (10:56 +0000)
committerSimon Marlow <marlowsd@gmail.com>
Thu, 14 May 2009 10:56:45 +0000 (10:56 +0000)
Makefile
ghc.mk
rules/build-prog.mk

index d4303b6..e5b2115 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -32,11 +32,14 @@ else
 default : all
        @:
 
+ifneq "$(findstring clean,$(MAKECMDGOALS))" ""
+-include mk/config.mk
+else
 include mk/config.mk
-
 ifeq "$(ProjectVersion)" ""
 $(error Please run ./configure first)
 endif
+endif
 
 include mk/custom-settings.mk
 
diff --git a/ghc.mk b/ghc.mk
index fa28608..3d5ead2 100644 (file)
--- a/ghc.mk
+++ b/ghc.mk
@@ -134,18 +134,23 @@ show:
 # -----------------------------------------------------------------------------
 # Include subsidiary build-system bits
 
+ifneq "$(findstring clean,$(MAKECMDGOALS))" ""
+-include mk/config.mk
+else
 include mk/config.mk
-
 ifeq "$(ProjectVersion)" ""
 $(error Please run ./configure first)
 endif
+endif
 
 # (Optional) build-specific configuration
 include mk/custom-settings.mk
 
+ifeq "$(findstring clean,$(MAKECMDGOALS))" ""
 ifeq "$(GhcLibWays)" ""
 $(error $$(GhcLibWays) is empty, it must contain at least one way)
 endif
+endif
 
 # -----------------------------------------------------------------------------
 # Macros for standard targets
@@ -559,9 +564,11 @@ libraries/base3-compat_dist-install_HC_OPTS += -XPackageImports
 
 ifneq "$(BINDIST)" "YES"
 
+ifneq "$(BOOTSTRAPPING_CONF)" ""
 ifeq "$(wildcard $(BOOTSTRAPPING_CONF))" ""
 $(shell echo "[]" >$(BOOTSTRAPPING_CONF))
 endif
+endif
 
 $(eval $(call clean-target,$(BOOTSTRAPPING_CONF),,$(BOOTSTRAPPING_CONF)))
 
index 8f01e66..8397f3f 100644 (file)
@@ -128,10 +128,13 @@ endif
 $(call all-target,$1_$2,$$($1_$2_INPLACE))
 $(call clean-target,$1,$2_inplace,$$($1_$2_INPLACE))
 
+# INPLACE_BIN might be empty if we're distcleaning
+ifneq "$$(INPLACE_BIN)" ""
 $$($1_$2_INPLACE) : $1/$2/build/tmp/$$($1_$2_PROG) $$(MKDIRHIER)
        $$(MKDIRHIER) $$(dir $$@)
        $$(CP) -p $$< $$@
        touch $$@
+endif
 
 # touch is necessary; cp doesn't update the file time.
 endif