From 75d9236613acdcfa54deb81b12bd4546c31e7c9f Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Tue, 21 Sep 2010 13:47:29 +0000 Subject: [PATCH] add a simple trace facility to the build system saying make TRACE=1 prints most of the macro calls and their arguments. It's easy to trace new macros; see rules/trace.mk. --- ghc.mk | 1 + rules/build-dependencies.mk | 1 + rules/build-package-data.mk | 1 + rules/build-package-way.mk | 1 + rules/build-package.mk | 1 + rules/build-perl.mk | 1 + rules/build-prog.mk | 1 + rules/docbook.mk | 1 + rules/extra-packages.mk | 4 +++- rules/haddock.mk | 1 + rules/manual-package-config.mk | 1 + rules/package-config.mk | 1 + rules/shell-wrapper.mk | 1 + rules/tags-package.mk | 1 + rules/trace.mk | 21 +++++++++++++++++++++ 15 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 rules/trace.mk diff --git a/ghc.mk b/ghc.mk index 0dfad2f..4184e19 100644 --- a/ghc.mk +++ b/ghc.mk @@ -153,6 +153,7 @@ endif # ----------------------------------------------------------------------------- # Utility definitions +include rules/trace.mk include rules/make-command.mk # ----------------------------------------------------------------------------- diff --git a/rules/build-dependencies.mk b/rules/build-dependencies.mk index b1b5fe8..f223288 100644 --- a/rules/build-dependencies.mk +++ b/rules/build-dependencies.mk @@ -11,6 +11,7 @@ # ----------------------------------------------------------------------------- define build-dependencies +$(call trace, build-dependencies($1,$2,$3)) # $1 = dir # $2 = distdir # $3 = GHC stage to use (0 == bootstrapping compiler) diff --git a/rules/build-package-data.mk b/rules/build-package-data.mk index d254638..2ed47e1 100644 --- a/rules/build-package-data.mk +++ b/rules/build-package-data.mk @@ -11,6 +11,7 @@ # ----------------------------------------------------------------------------- define build-package-data +$(call trace, build-package-data($1,$2,$3)) # args: # $1 = dir # $2 = distdir diff --git a/rules/build-package-way.mk b/rules/build-package-way.mk index 5752709..d829a00 100644 --- a/rules/build-package-way.mk +++ b/rules/build-package-way.mk @@ -12,6 +12,7 @@ define build-package-way # $1 = dir, $2 = distdir, $3 = way, $4 = stage +$(call trace, build-package-way($1,$2,$3)) $(call distdir-way-opts,$1,$2,$3,$4) $(call hs-suffix-rules,$1,$2,$3) diff --git a/rules/build-package.mk b/rules/build-package.mk index cd02646..fc3d0f7 100644 --- a/rules/build-package.mk +++ b/rules/build-package.mk @@ -29,6 +29,7 @@ # libraries/base_dist_LD_OPTS = -package ghc-prim-0.1.0.0 define build-package +$(call trace, build-package($1,$2,$3)) # $1 = dir # $2 = distdir # $3 = GHC stage to use (0 == bootstrapping compiler) diff --git a/rules/build-perl.mk b/rules/build-perl.mk index 5ee1d23..cd23185 100644 --- a/rules/build-perl.mk +++ b/rules/build-perl.mk @@ -19,6 +19,7 @@ # $(eval $(call build-perl,driver/mangler,dist)) define build-perl +$(call trace, build-perl($1,$2)) # $1 = dir # $2 = distdir diff --git a/rules/build-prog.mk b/rules/build-prog.mk index e9252eb..76e2cb6 100644 --- a/rules/build-prog.mk +++ b/rules/build-prog.mk @@ -20,6 +20,7 @@ # $(eval $(call build-prog,utils/genapply,dist-install,1)) define build-prog +$(call trace, build-prog($1,$2,$3)) # $1 = dir # $2 = distdir # $3 = GHC stage to use (0 == bootstrapping compiler) diff --git a/rules/docbook.mk b/rules/docbook.mk index ccc0fa4..8488de1 100644 --- a/rules/docbook.mk +++ b/rules/docbook.mk @@ -14,6 +14,7 @@ # Build docbook docs define docbook +$(call trace, docbook($1,$2)) # $1 = dir # $2 = docname diff --git a/rules/extra-packages.mk b/rules/extra-packages.mk index c54c604..7218a6f 100644 --- a/rules/extra-packages.mk +++ b/rules/extra-packages.mk @@ -36,11 +36,13 @@ $$(foreach p,$$(patsubst libraries/%,%,$$(wildcard $$(shell grep '^[^ ]\+ \+\(dp endef define extra-package # $1 = package root, $2 = package +$(call trace, extra-package($1,$2)) + EXTRA_PACKAGES += $2 ifeq "$(wildcard libraries/$1/ghc-stage2-package)" "" $$(eval $$(call addPackage,$2)) else $$(eval $$(call addPackage2,$2)) endif -endef +endef diff --git a/rules/haddock.mk b/rules/haddock.mk index f943610..0454496 100644 --- a/rules/haddock.mk +++ b/rules/haddock.mk @@ -12,6 +12,7 @@ define haddock # args: $1 = dir, $2 = distdir +$(call trace, haddock($1,$2)) ifneq "$$($1_$2_DO_HADDOCK)" "NO" diff --git a/rules/manual-package-config.mk b/rules/manual-package-config.mk index 8d1eba9..6b2b2ac 100644 --- a/rules/manual-package-config.mk +++ b/rules/manual-package-config.mk @@ -12,6 +12,7 @@ define manual-package-config # args: $1 = dir +$(call trace, manual-package-config($1)) $1/package.conf.inplace : $1/package.conf.in $(GHC_PKG_INPLACE) $$(CPP) $$(RAWCPP_FLAGS) -P \ diff --git a/rules/package-config.mk b/rules/package-config.mk index b68f2e1..bd962e1 100644 --- a/rules/package-config.mk +++ b/rules/package-config.mk @@ -12,6 +12,7 @@ define package-config # args: $1 = dir, $2 = distdir, $3 = GHC stage +$(call trace, package-config($1,$2,$3)) $1_$2_HC = $$(GHC_STAGE$3) diff --git a/rules/shell-wrapper.mk b/rules/shell-wrapper.mk index 5df9ff2..1315ea3 100644 --- a/rules/shell-wrapper.mk +++ b/rules/shell-wrapper.mk @@ -11,6 +11,7 @@ # ----------------------------------------------------------------------------- define shell-wrapper +$(call trace, shell-wrapper($1,$2)) # $1 = dir # $2 = distdir diff --git a/rules/tags-package.mk b/rules/tags-package.mk index a7e46d1..e911648 100644 --- a/rules/tags-package.mk +++ b/rules/tags-package.mk @@ -18,6 +18,7 @@ # Uses the same metadata as build-package. define tags-package +$(call trace, tags-package($1,$2)) # $1 = dir # $2 = distdir diff --git a/rules/trace.mk b/rules/trace.mk new file mode 100644 index 0000000..356f121 --- /dev/null +++ b/rules/trace.mk @@ -0,0 +1,21 @@ +# ----------------------------------------------------------------------------- +# +# (c) 2010 The University of Glasgow +# +# This file is part of the GHC build system. +# +# To understand how the build system works and how to modify it, see +# http://hackage.haskell.org/trac/ghc/wiki/Building/Architecture +# http://hackage.haskell.org/trac/ghc/wiki/Building/Modifying +# +# ----------------------------------------------------------------------------- + +# A helpful little debug macro. Call it from a macro like this: +# +# $(call trace, this-macro($1,$2,$3)) +# +# And invoke the build system with TRACE=1 to turn on tracing. + +define trace +$$(if $(TRACE),$$(warning $1),) +endef -- 1.7.10.4