Do the dependency-omitting for 'make 1' in a slightly different way
authorSimon Marlow <marlowsd@gmail.com>
Tue, 10 Aug 2010 09:34:46 +0000 (09:34 +0000)
committerSimon Marlow <marlowsd@gmail.com>
Tue, 10 Aug 2010 09:34:46 +0000 (09:34 +0000)
I encountered a couple of things that broke after Ian's previous
patch: one was my nightly build scripts that use 'make stage=2' at the
top level, and the other is 'make fast' in libraries/base, which uses
'stage=0' to avoid building any compilers.

So my version of this patch is more direct: it just turns off the
appropriate dependencies using a variable set by 'make 1', 'make 2',
etc.

compiler/Makefile
ghc/Makefile
rules/build-dependencies.mk

index f2c31e8..639076a 100644 (file)
@@ -28,13 +28,13 @@ FAST_MAKE_OPTS += compiler_stage1_NO_BUILD_DEPS=YES compiler_stage2_NO_BUILD_DEP
 .PHONY: 1 2 3
 
 1:
-       +$(TOPMAKE) stage=1 all_ghc_stage1 $(FAST_MAKE_OPTS)
+       +$(TOPMAKE) stage=1 all_ghc_stage1 $(FAST_MAKE_OPTS) NO_STAGE1_DEPS=YES NO_STAGE2_DEPS=YES
 
 2:
-       +$(TOPMAKE) stage=2 all_ghc_stage2 $(FAST_MAKE_OPTS)
+       +$(TOPMAKE) stage=2 all_ghc_stage2 $(FAST_MAKE_OPTS) NO_STAGE2_DEPS=YES
 
 3:
-       +$(TOPMAKE) stage=3 all_ghc_stage3 $(FAST_MAKE_OPTS)
+       +$(TOPMAKE) stage=3 all_ghc_stage3 $(FAST_MAKE_OPTS) NO_STAGE3_DEPS=YES
 
 .PHONY: extra-help
 help : extra-help
index f61df55..d903517 100644 (file)
@@ -25,13 +25,14 @@ FAST_MAKE_OPTS += compiler_stage1_NO_BUILD_DEPS=YES \
 .PHONY: 1 2 3
 
 1:
-       +$(TOPMAKE) stage=1 all_ghc_stage1 $(FAST_MAKE_OPTS)
+       +$(TOPMAKE) stage=1 all_ghc_stage1 $(FAST_MAKE_OPTS) NO_STAGE1_DEPS=YES NO_STAGE2_DEPS=YES
 
 2:
-       +$(TOPMAKE) stage=2 all_ghc_stage2 $(FAST_MAKE_OPTS)
+       +$(TOPMAKE) stage=2 all_ghc_stage2 $(FAST_MAKE_OPTS) NO_STAGE2_DEPS=YES
 
 3:
-       +$(TOPMAKE) stage=3 all_ghc_stage3 $(FAST_MAKE_OPTS)
+       +$(TOPMAKE) stage=3 all_ghc_stage3 $(FAST_MAKE_OPTS) NO_STAGE3_DEPS=YES
+
 
 .PHONY: extra-help
 help : extra-help
index a1b55b6..2562611 100644 (file)
@@ -67,22 +67,17 @@ endif # $1_$2_NO_BUILD_DEPS
 $$($1_$2_depfile_haskell) : $$(UNLIT)
 
 ifneq "$$(NO_INCLUDE_DEPS)" "YES"
-# This next test stops us rebuilding all the dep files when doing e.g.
-# "make 1" in compiler or ghc. If stage is blank (just building normally.
-# so we want all deps), or if $3 is stage-1 (when building stage n, we
-# use stage n-1, so we want any dependencies used by the stage n-1
-# compiler), then we want to include the dependencies.
-ifneq "$$(or $$(if $$(stage),,YES),$$(findstring $3,$$(word $$(stage),0 1 2 3)))" ""
 ifneq "$$(strip $$($1_$2_HS_SRCS) $$($1_$2_HS_BOOT_SRCS))" ""
+ifneq "$$(NO_STAGE$3_DEPS)" "YES"
 include $$($1_$2_depfile_haskell)
 endif
+endif
 include $$($1_$2_depfile_c_asm)
 else
 ifeq "$$(DEBUG)" "YES"
 $$(warning not building dependencies in $1)
 endif
 endif
-endif
 
 endef