Commit 7a50ff1e authored by Simon Marlow's avatar Simon Marlow

Do the dependency-omitting for 'make 1' in a slightly different way

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.
parent 40114073
......@@ -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
......
......@@ -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
......
......@@ -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
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment