Commit 577d3158 authored by thomie's avatar thomie

Build system: always use `make -r`

Do what this comment was suggesting:

    "Ideally we'd like to have 'make -r' turned on by default, because
    that disables all the implicit rules, but there doesn't seem to be a
    good way to do that."

This change doesn't seem to have much effect on the time it takes to run
make. Apparently clearing .SUFFIXES was enough for that. But it does
make the output of `make -d` quite a bit shorter, which is nice.

Note: ghc.mk is always called indirectly, so no need to set .SUFFIXES or
MAKEFLAGS there again.

Differential Revision: https://phabricator.haskell.org/D915
parent 48ed2f12
...@@ -10,6 +10,14 @@ ...@@ -10,6 +10,14 @@
# #
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Eliminate use of the built-in implicit rules, and clear out the default list
# of suffixes for suffix rules. Speeds up make quite a bit. Both are needed
# for the shortest `make -d` output.
# Don't set --no-builtin-variables; some rules might stop working if you do
# (e.g. 'make clean' in testsuite/ currently relies on an implicit $RM).
MAKEFLAGS += --no-builtin-rules
.SUFFIXES:
ifeq "$(wildcard distrib/)" "" ifeq "$(wildcard distrib/)" ""
# We're in a bindist # We're in a bindist
...@@ -21,7 +29,7 @@ default: ...@@ -21,7 +29,7 @@ default:
.PHONY: install show .PHONY: install show
install show: install show:
$(MAKE) -r --no-print-directory -f ghc.mk $@ BINDIST=YES NO_INCLUDE_DEPS=YES $(MAKE) --no-print-directory -f ghc.mk $@ BINDIST=YES NO_INCLUDE_DEPS=YES
else else
...@@ -70,14 +78,14 @@ REALGOALS=$(filter-out binary-dist binary-dist-prep bootstrapping-files framewor ...@@ -70,14 +78,14 @@ REALGOALS=$(filter-out binary-dist binary-dist-prep bootstrapping-files framewor
$(REALGOALS) all: mk/config.mk.old mk/project.mk.old compiler/ghc.cabal.old $(REALGOALS) all: mk/config.mk.old mk/project.mk.old compiler/ghc.cabal.old
ifneq "$(OMIT_PHASE_0)" "YES" ifneq "$(OMIT_PHASE_0)" "YES"
@echo "===--- building phase 0" @echo "===--- building phase 0"
$(MAKE) -r --no-print-directory -f ghc.mk phase=0 phase_0_builds $(MAKE) --no-print-directory -f ghc.mk phase=0 phase_0_builds
endif endif
ifneq "$(OMIT_PHASE_1)" "YES" ifneq "$(OMIT_PHASE_1)" "YES"
@echo "===--- building phase 1" @echo "===--- building phase 1"
$(MAKE) -r --no-print-directory -f ghc.mk phase=1 phase_1_builds $(MAKE) --no-print-directory -f ghc.mk phase=1 phase_1_builds
endif endif
@echo "===--- building final phase" @echo "===--- building final phase"
$(MAKE) -r --no-print-directory -f ghc.mk phase=final $@ $(MAKE) --no-print-directory -f ghc.mk phase=final $@
.PHONY: binary-dist .PHONY: binary-dist
binary-dist: binary-dist-prep binary-dist: binary-dist-prep
...@@ -86,25 +94,25 @@ binary-dist: binary-dist-prep ...@@ -86,25 +94,25 @@ binary-dist: binary-dist-prep
.PHONY: binary-dist-prep .PHONY: binary-dist-prep
binary-dist-prep: binary-dist-prep:
ifeq "$(mingw32_TARGET_OS)" "1" ifeq "$(mingw32_TARGET_OS)" "1"
$(MAKE) -r --no-print-directory -f ghc.mk windows-binary-dist-prep $(MAKE) --no-print-directory -f ghc.mk windows-binary-dist-prep
else else
rm -f bindist-list rm -f bindist-list
$(MAKE) -r --no-print-directory -f ghc.mk bindist BINDIST=YES $(MAKE) --no-print-directory -f ghc.mk bindist BINDIST=YES
$(MAKE) -r --no-print-directory -f ghc.mk unix-binary-dist-prep $(MAKE) --no-print-directory -f ghc.mk unix-binary-dist-prep
endif endif
.PHONY: clean distclean maintainer-clean .PHONY: clean distclean maintainer-clean
clean distclean maintainer-clean: clean distclean maintainer-clean:
$(MAKE) -r --no-print-directory -f ghc.mk $@ CLEANING=YES $(MAKE) --no-print-directory -f ghc.mk $@ CLEANING=YES
test ! -d testsuite || $(MAKE) -C testsuite $@ test ! -d testsuite || $(MAKE) -C testsuite $@
.PHONY: $(filter clean_%,$(MAKECMDGOALS)) .PHONY: $(filter clean_%,$(MAKECMDGOALS))
$(filter clean_%, $(MAKECMDGOALS)) : clean_% : $(filter clean_%, $(MAKECMDGOALS)) : clean_% :
$(MAKE) -r --no-print-directory -f ghc.mk $@ CLEANING=YES $(MAKE) --no-print-directory -f ghc.mk $@ CLEANING=YES
.PHONY: bootstrapping-files show echo .PHONY: bootstrapping-files show echo
bootstrapping-files show echo: bootstrapping-files show echo:
$(MAKE) -r --no-print-directory -f ghc.mk $@ $(MAKE) --no-print-directory -f ghc.mk $@
ifeq "$(darwin_TARGET_OS)" "1" ifeq "$(darwin_TARGET_OS)" "1"
.PHONY: framework-pkg .PHONY: framework-pkg
......
...@@ -107,12 +107,6 @@ nothing= ...@@ -107,12 +107,6 @@ nothing=
space=$(nothing) $(nothing) space=$(nothing) $(nothing)
comma=, comma=,
# Cancel all suffix rules. Ideally we'd like to have 'make -r' turned on
# by default, because that disables all the implicit rules, but there doesn't
# seem to be a good way to do that. This turns off all the old-style suffix
# rules, which does half the job and speeds up make quite a bit:
.SUFFIXES:
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Makefile debugging # Makefile debugging
# #
......
...@@ -9,7 +9,12 @@ ...@@ -9,7 +9,12 @@
# make clean ==> make -C $(TOP) clean_dir # make clean ==> make -C $(TOP) clean_dir
# #
# Important, otherwise we get silly built-in rules: # Eliminate use of the built-in implicit rules, and clear out the default list
# of suffixes for suffix rules. Speeds up make quite a bit. Both are needed
# for the shortest `make -d` output.
# Don't set --no-builtin-variables; some rules might stop working if you do
# (e.g. 'make clean' in testsuite/ currently relies on an implicit $RM).
MAKEFLAGS += --no-builtin-rules
.SUFFIXES: .SUFFIXES:
TOPMAKE = $(MAKE) -C $(TOP) TOPMAKE = $(MAKE) -C $(TOP)
......
# Eliminate use of the built-in implicit rules, and clear out the default list
# of suffixes for suffix rules. Speeds up make quite a bit. Both are needed
# for the shortest `make -d` output.
# Don't set --no-builtin-variables; some rules might stop working if you do
# (e.g. 'make clean' in testsuite/ currently relies on an implicit $RM).
MAKEFLAGS += --no-builtin-rules
.SUFFIXES:
default: all default: all
......
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