summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2010-09-21 13:47:29 +0000
committerSimon Marlow <marlowsd@gmail.com>2010-09-21 13:47:29 +0000
commit75d9236613acdcfa54deb81b12bd4546c31e7c9f (patch)
treeaba9667bbdc8518d431ee79a6190069f736a61b0
parent6a1dd52566ae92ce133e751d9a800a8631b05b73 (diff)
downloadhaskell-75d9236613acdcfa54deb81b12bd4546c31e7c9f.tar.gz
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.
-rw-r--r--ghc.mk1
-rw-r--r--rules/build-dependencies.mk1
-rw-r--r--rules/build-package-data.mk1
-rw-r--r--rules/build-package-way.mk1
-rw-r--r--rules/build-package.mk1
-rw-r--r--rules/build-perl.mk1
-rw-r--r--rules/build-prog.mk1
-rw-r--r--rules/docbook.mk1
-rw-r--r--rules/extra-packages.mk4
-rw-r--r--rules/haddock.mk1
-rw-r--r--rules/manual-package-config.mk1
-rw-r--r--rules/package-config.mk1
-rw-r--r--rules/shell-wrapper.mk1
-rw-r--r--rules/tags-package.mk1
-rw-r--r--rules/trace.mk21
15 files changed, 37 insertions, 1 deletions
diff --git a/ghc.mk b/ghc.mk
index 0dfad2ffa8..4184e19990 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 b1b5fe831c..f223288ea7 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 d2546380da..2ed47e1499 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 5752709194..d829a001a1 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 cd02646884..fc3d0f71a6 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 5ee1d2350b..cd23185462 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 e9252eb65c..76e2cb671e 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 ccc0fa47a7..8488de1484 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 c54c60496f..7218a6f569 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 f943610bdc..04544963d7 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 8d1eba9322..6b2b2ac2cb 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 b68f2e1de5..bd962e15ac 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 5df9ff2930..1315ea35a4 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 a7e46d1934..e9116487fb 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 0000000000..356f121d23
--- /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