summaryrefslogtreecommitdiff
path: root/ghc.mk
diff options
context:
space:
mode:
authorThomas Miedema <thomasmiedema@gmail.com>2015-09-08 13:51:44 +0200
committerThomas Miedema <thomasmiedema@gmail.com>2015-09-08 18:25:02 +0200
commit1b8eca18fc2bb9ccb4fd3246ac48318975574722 (patch)
tree5a5dea7dcc60551d187e52c73adbed6ede304f3a /ghc.mk
parente4a73f4fa1cc9681aee3ce13ee15073deed54635 (diff)
downloadhaskell-1b8eca18fc2bb9ccb4fd3246ac48318975574722.tar.gz
Build system: check for inconsistent settings (#10157)
`configure` currently detects when the docbook and hscolour tools aren't available, and instead of failing outright (as it does for missing alex and happy), sets some variables in mk/config.mk to tell `make` not to build the documentation. Sometimes, however, you want to really make sure all documentation gets built, fully colourized. For example when making a release. To do so, you can override the mentioned variables from mk/config.mk in mk/build.mk (e.g. set HSCOLOUR_SRCS=YES). This patch adds some error checking to make sure that doing so will not result in weird build failures when those tools are still missing. Test Plan: ran `make` a couple of times, with different mk/config.mk settings. Reviewed by: austin Differential Revision: https://phabricator.haskell.org/D1232
Diffstat (limited to 'ghc.mk')
-rw-r--r--ghc.mk39
1 files changed, 39 insertions, 0 deletions
diff --git a/ghc.mk b/ghc.mk
index f933ce7b1b..cc19501e12 100644
--- a/ghc.mk
+++ b/ghc.mk
@@ -147,7 +147,13 @@ include mk/custom-settings.mk
SRC_CC_OPTS += $(WERROR)
SRC_HC_OPTS += $(WERROR)
+# -----------------------------------------------------------------------------
+# Check for inconsistent settings, after reading mk/build.mk.
+# Although mk/config.mk should always contain consistent settings (set by
+# configure), mk/build.mk can contain pretty much anything.
+
ifneq "$(CLEANING)" "YES"
+
ifeq "$(DYNAMIC_GHC_PROGRAMS)" "YES"
ifeq "$(findstring dyn,$(GhcLibWays))" ""
$(error dyn is not in $$(GhcLibWays), but $$(DYNAMIC_GHC_PROGRAMS) is YES)
@@ -157,12 +163,45 @@ ifeq "$(findstring v,$(GhcLibWays))" ""
$(error v is not in $$(GhcLibWays), and $$(DYNAMIC_GHC_PROGRAMS) is not YES)
endif
endif
+
ifeq "$(GhcProfiled)" "YES"
ifeq "$(findstring p,$(GhcLibWays))" ""
$(error p is not in $$(GhcLibWays), and $$(GhcProfiled) is YES)
endif
endif
+
+ifeq "$(BUILD_DOCBOOK_HTML)" "YES"
+ifeq "$(XSLTPROC)" ""
+$(error BUILD_DOCBOOK_HTML=YES, but `xsltproc` was not found. \
+ Install `xsltproc`, then rerun `./configure`. \
+ See https://ghc.haskell.org/trac/ghc/wiki/Building/Preparation)
+endif
+ifeq "$(HAVE_DOCBOOK_XSL)" "NO"
+$(error BUILD_DOCBOOK_HTML=YES, but DocBook XSL stylesheets were not found. \
+ Install `docbook-xsl`, then rerun `./configure`. \
+ See https://ghc.haskell.org/trac/ghc/wiki/Building/Preparation)
+endif
+endif
+
+ifneq "$(BUILD_DOCBOOK_PS) $(BUILD_DOCBOOK_PDF)" "NO NO"
+ifeq "$(DBLATEX)" ""
+$(error BUILD_DOCBOOK_PS or BUILD_DOCBOOK_PDF=YES, but `dblatex` was not found. \
+ Install `dblatex`, then rerun `./configure`. \
+ See https://ghc.haskell.org/trac/ghc/wiki/Building/Preparation)
endif
+endif
+
+ifeq "$(HSCOLOUR_SRCS)" "YES"
+ifeq "$(HSCOLOUR_CMD)" ""
+$(error HSCOLOUR_SRCS=YES, but HSCOLOUR_CMD is empty. \
+ Run `cabal install hscolour`, then rerun `./configure`. \
+ See https://ghc.haskell.org/trac/ghc/wiki/Building/Preparation)
+endif
+endif
+
+endif # CLEANING
+
+# -----------------------------------------------------------------------------
ifeq "$(phase)" ""
phase = final