add a simple trace facility to the build system
authorSimon Marlow <marlowsd@gmail.com>
Tue, 21 Sep 2010 13:47:29 +0000 (13:47 +0000)
committerSimon Marlow <marlowsd@gmail.com>
Tue, 21 Sep 2010 13:47:29 +0000 (13:47 +0000)
saying

  make TRACE=1

prints most of the macro calls and their arguments.  It's easy to
trace new macros; see rules/trace.mk.

15 files changed:
ghc.mk
rules/build-dependencies.mk
rules/build-package-data.mk
rules/build-package-way.mk
rules/build-package.mk
rules/build-perl.mk
rules/build-prog.mk
rules/docbook.mk
rules/extra-packages.mk
rules/haddock.mk
rules/manual-package-config.mk
rules/package-config.mk
rules/shell-wrapper.mk
rules/tags-package.mk
rules/trace.mk [new file with mode: 0644]

diff --git a/ghc.mk b/ghc.mk
index 0dfad2f..4184e19 100644 (file)
--- a/ghc.mk
+++ b/ghc.mk
@@ -153,6 +153,7 @@ endif
 # -----------------------------------------------------------------------------
 # Utility definitions
 
 # -----------------------------------------------------------------------------
 # Utility definitions
 
+include rules/trace.mk
 include rules/make-command.mk
 
 # -----------------------------------------------------------------------------
 include rules/make-command.mk
 
 # -----------------------------------------------------------------------------
index b1b5fe8..f223288 100644 (file)
@@ -11,6 +11,7 @@
 # -----------------------------------------------------------------------------
 
 define build-dependencies
 # -----------------------------------------------------------------------------
 
 define build-dependencies
+$(call trace, build-dependencies($1,$2,$3))
 # $1 = dir
 # $2 = distdir
 # $3 = GHC stage to use (0 == bootstrapping compiler)
 # $1 = dir
 # $2 = distdir
 # $3 = GHC stage to use (0 == bootstrapping compiler)
index d254638..2ed47e1 100644 (file)
@@ -11,6 +11,7 @@
 # -----------------------------------------------------------------------------
 
 define build-package-data
 # -----------------------------------------------------------------------------
 
 define build-package-data
+$(call trace, build-package-data($1,$2,$3))
 # args:
 # $1 = dir
 # $2 = distdir
 # args:
 # $1 = dir
 # $2 = distdir
index 5752709..d829a00 100644 (file)
@@ -12,6 +12,7 @@
 
 
 define build-package-way # $1 = dir, $2 = distdir, $3 = way, $4 = stage
 
 
 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)
 
 $(call distdir-way-opts,$1,$2,$3,$4)
 $(call hs-suffix-rules,$1,$2,$3)
index cd02646..fc3d0f7 100644 (file)
@@ -29,6 +29,7 @@
 # libraries/base_dist_LD_OPTS = -package ghc-prim-0.1.0.0
 
 define build-package
 # 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)
 # $1 = dir
 # $2 = distdir
 # $3 = GHC stage to use (0 == bootstrapping compiler)
index 5ee1d23..cd23185 100644 (file)
@@ -19,6 +19,7 @@
 # $(eval $(call build-perl,driver/mangler,dist))
 
 define build-perl
 # $(eval $(call build-perl,driver/mangler,dist))
 
 define build-perl
+$(call trace, build-perl($1,$2))
 # $1 = dir
 # $2 = distdir
 
 # $1 = dir
 # $2 = distdir
 
index e9252eb..76e2cb6 100644 (file)
@@ -20,6 +20,7 @@
 # $(eval $(call build-prog,utils/genapply,dist-install,1))
 
 define build-prog
 # $(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)
 # $1 = dir
 # $2 = distdir
 # $3 = GHC stage to use (0 == bootstrapping compiler)
index ccc0fa4..8488de1 100644 (file)
@@ -14,6 +14,7 @@
 # Build docbook docs
 
 define docbook
 # Build docbook docs
 
 define docbook
+$(call trace, docbook($1,$2))
 # $1 = dir
 # $2 = docname
 
 # $1 = dir
 # $2 = docname
 
index c54c604..7218a6f 100644 (file)
@@ -36,11 +36,13 @@ $$(foreach p,$$(patsubst libraries/%,%,$$(wildcard $$(shell grep '^[^ ]\+ \+\(dp
 endef
 
 define extra-package # $1 = package root, $2 = package
 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
 EXTRA_PACKAGES += $2
 ifeq "$(wildcard libraries/$1/ghc-stage2-package)" ""
 $$(eval $$(call addPackage,$2))
 else
 $$(eval $$(call addPackage2,$2))
 endif
-endef
 
 
+endef
index f943610..0454496 100644 (file)
@@ -12,6 +12,7 @@
 
 
 define haddock  # args: $1 = dir,  $2 = distdir
 
 
 define haddock  # args: $1 = dir,  $2 = distdir
+$(call trace, haddock($1,$2))
 
 ifneq "$$($1_$2_DO_HADDOCK)" "NO"
 
 
 ifneq "$$($1_$2_DO_HADDOCK)" "NO"
 
index 8d1eba9..6b2b2ac 100644 (file)
@@ -12,6 +12,7 @@
 
 
 define manual-package-config # args: $1 = dir
 
 
 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 \
 
 $1/package.conf.inplace : $1/package.conf.in $(GHC_PKG_INPLACE)
        $$(CPP) $$(RAWCPP_FLAGS) -P \
index b68f2e1..bd962e1 100644 (file)
@@ -12,6 +12,7 @@
 
 
 define package-config # args: $1 = dir, $2 = distdir, $3 = GHC stage
 
 
 define package-config # args: $1 = dir, $2 = distdir, $3 = GHC stage
+$(call trace, package-config($1,$2,$3))
 
 $1_$2_HC = $$(GHC_STAGE$3)
 
 
 $1_$2_HC = $$(GHC_STAGE$3)
 
index 5df9ff2..1315ea3 100644 (file)
@@ -11,6 +11,7 @@
 # -----------------------------------------------------------------------------
 
 define shell-wrapper
 # -----------------------------------------------------------------------------
 
 define shell-wrapper
+$(call trace, shell-wrapper($1,$2))
 # $1 = dir
 # $2 = distdir
 
 # $1 = dir
 # $2 = distdir
 
index a7e46d1..e911648 100644 (file)
@@ -18,6 +18,7 @@
 # Uses the same metadata as build-package.
 
 define tags-package
 # Uses the same metadata as build-package.
 
 define tags-package
+$(call trace, tags-package($1,$2))
 # $1 = dir
 # $2 = distdir
 
 # $1 = dir
 # $2 = distdir
 
diff --git a/rules/trace.mk b/rules/trace.mk
new file mode 100644 (file)
index 0000000..356f121
--- /dev/null
@@ -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