Early error when crosscompiling + haddock/docs
authorThomas Miedema <thomasmiedema@gmail.com>
Tue, 9 Feb 2016 10:06:13 +0000 (11:06 +0100)
committerBen Gamari <ben@smart-cactus.org>
Tue, 9 Feb 2016 10:06:24 +0000 (11:06 +0100)
When CrossCompiling=YES or Stage1Only=YES, building the haddocks and the
User's Guide should be skipped, because haddock and mkUserGuidePart
depend on the GHC API.
See Note [No stage2 packages when CrossCompiling or Stage1Only] for
details.

There are several places in the build system where the variables
HADDOCK_DOCS and BUILD_SPHINX_* are checked. Instead of also checking
for the variables CrossCompiling or Stage1Only in all those places,
`make` will now exit with a nice error message when the user requests
the impossible.

Reviewers: rwbarton, austin, bgamari

Reviewed By: bgamari

Differential Revision: https://phabricator.haskell.org/D1882

15 files changed:
ghc.mk
mk/flavours/bench-cross.mk
mk/flavours/bench-llvm.mk
mk/flavours/bench.mk
mk/flavours/devel1.mk
mk/flavours/devel2.mk
mk/flavours/perf-cross.mk
mk/flavours/perf-llvm.mk
mk/flavours/perf.mk
mk/flavours/prof.mk
mk/flavours/quick-cross.mk
mk/flavours/quick-llvm.mk
mk/flavours/quick.mk
mk/flavours/quickest.mk
mk/flavours/validate.mk

diff --git a/ghc.mk b/ghc.mk
index 8257cf0..8f4aaba 100644 (file)
--- a/ghc.mk
+++ b/ghc.mk
@@ -195,6 +195,24 @@ $(error HSCOLOUR_SRCS=YES, but HSCOLOUR_CMD is empty. \
 endif
 endif
 
+ifeq "$(HADDOCK_DOCS)" "YES"
+ifneq "$(CrossCompiling) $(Stage1Only)" "NO NO"
+$(error Can not build haddock docs when CrossCompiling or Stage1Only. \
+  Set HADDOCK_DOCS=NO in your mk/build.mk file. \
+  See Note [No stage2 packages when CrossCompiling or Stage1Only])
+endif
+endif
+
+ifneq "$(BUILD_SPHINX_HTML) $(BUILD_SPHINX_PDF)" "NO NO"
+# The User's Guide requires mkUserGuidePart, which uses the GHC API.
+ifneq "$(CrossCompiling) $(Stage1Only)" "NO NO"
+$(error Can not build User's Guide when CrossCompiling or Stage1Only. \
+  Set BUILD_SPHINX_HTML=NO, BUILD_SPHINX_PDF=NO in your \
+  mk/build.mk file. \
+  See Note [No stage2 packages when CrossCompiling or Stage1Only])
+endif
+endif
+
 endif # CLEANING
 
 # -----------------------------------------------------------------------------
@@ -691,7 +709,7 @@ ifeq "$(HADDOCK_DOCS)" "NO"
 BUILD_DIRS := $(filter-out utils/haddock,$(BUILD_DIRS))
 BUILD_DIRS := $(filter-out utils/haddock/doc,$(BUILD_DIRS))
 endif
-ifeq "$(BUILD_SPHINX_HTML) $(BUILD_SPHINX_PDF)" "NO NO NO"
+ifeq "$(BUILD_SPHINX_HTML) $(BUILD_SPHINX_PDF)" "NO NO"
 # Don't to build this little utility if we're not building the User's Guide.
 BUILD_DIRS := $(filter-out utils/mkUserGuidePart,$(BUILD_DIRS))
 endif
@@ -711,11 +729,8 @@ endif
 ifneq "$(CrossCompiling) $(Stage1Only)" "NO NO"
 # See Note [No stage2 packages when CrossCompiling or Stage1Only].
 # See Note [Stage1Only vs stage=1] in mk/config.mk.in.
-BUILD_DIRS := $(filter-out utils/haddock,$(BUILD_DIRS))
-BUILD_DIRS := $(filter-out utils/haddock/doc,$(BUILD_DIRS))
 BUILD_DIRS := $(filter-out utils/ghctags,$(BUILD_DIRS))
 BUILD_DIRS := $(filter-out utils/check-api-annotations,$(BUILD_DIRS))
-BUILD_DIRS := $(filter-out utils/mkUserGuidePart,$(BUILD_DIRS))
 endif
 endif # CLEANING
 
index 69447a2..15b359e 100644 (file)
@@ -6,7 +6,6 @@ BUILD_PROF_LIBS    = NO
 SplitObjs          = NO
 HADDOCK_DOCS       = NO
 BUILD_SPHINX_HTML  = NO
-BUILD_SPHINX_PS    = NO
 BUILD_SPHINX_PDF   = NO
 BUILD_MAN          = NO
 
index e07c1f3..2da8ddb 100644 (file)
@@ -6,6 +6,5 @@ BUILD_PROF_LIBS    = NO
 SplitObjs          = NO
 HADDOCK_DOCS       = NO
 BUILD_SPHINX_HTML  = NO
-BUILD_SPHINX_PS    = NO
 BUILD_SPHINX_PDF   = NO
 BUILD_MAN          = NO
index 1368c47..ad77219 100644 (file)
@@ -6,6 +6,5 @@ BUILD_PROF_LIBS    = NO
 SplitObjs          = NO
 HADDOCK_DOCS       = NO
 BUILD_SPHINX_HTML  = NO
-BUILD_SPHINX_PS    = NO
 BUILD_SPHINX_PDF   = NO
 BUILD_MAN          = NO
index 8489c0f..ea730c9 100644 (file)
@@ -6,7 +6,6 @@ BUILD_PROF_LIBS    = NO
 SplitObjs          = NO
 HADDOCK_DOCS       = NO
 BUILD_SPHINX_HTML  = NO
-BUILD_SPHINX_PS    = NO
 BUILD_SPHINX_PDF   = NO
 BUILD_MAN          = NO
 
index 1f073ed..c86624a 100644 (file)
@@ -6,7 +6,6 @@ BUILD_PROF_LIBS    = NO
 SplitObjs          = NO
 HADDOCK_DOCS       = NO
 BUILD_SPHINX_HTML  = NO
-BUILD_SPHINX_PS    = NO
 BUILD_SPHINX_PDF   = NO
 BUILD_MAN          = NO
 
index 9540f8c..669b51a 100644 (file)
@@ -6,7 +6,6 @@ BUILD_PROF_LIBS    = YES
 #SplitObjs
 HADDOCK_DOCS       = NO
 BUILD_SPHINX_HTML  = NO
-BUILD_SPHINX_PS    = NO
 BUILD_SPHINX_PDF   = NO
 BUILD_MAN          = NO
 
index 4a93d6b..cd3d4f4 100644 (file)
@@ -6,5 +6,4 @@ BUILD_PROF_LIBS    = YES
 #SplitObjs
 #HADDOCK_DOCS
 #BUILD_SPHINX_HTML
-#BUILD_SPHINX_PS
 #BUILD_SPHINX_PDF
index c94b860..06fcc24 100644 (file)
@@ -6,5 +6,4 @@ BUILD_PROF_LIBS    = YES
 #SplitObjs
 #HADDOCK_DOCS
 #BUILD_SPHINX_HTML
-#BUILD_SPHINX_PS
 #BUILD_SPHINX_PDF
index 684ffb0..67f89e6 100644 (file)
@@ -6,7 +6,6 @@ BUILD_PROF_LIBS    = YES
 SplitObjs          = NO
 HADDOCK_DOCS       = NO
 BUILD_SPHINX_HTML  = NO
-BUILD_SPHINX_PS    = NO
 BUILD_SPHINX_PDF   = NO
 BUILD_MAN          = NO
 
index b10dbc5..92347ca 100644 (file)
@@ -6,7 +6,6 @@ BUILD_PROF_LIBS    = NO
 SplitObjs          = NO
 HADDOCK_DOCS       = NO
 BUILD_SPHINX_HTML  = NO
-BUILD_SPHINX_PS    = NO
 BUILD_SPHINX_PDF   = NO
 BUILD_MAN          = NO
 
index 84a8034..0a63f5f 100644 (file)
@@ -6,6 +6,5 @@ BUILD_PROF_LIBS    = NO
 SplitObjs          = NO
 HADDOCK_DOCS       = NO
 BUILD_SPHINX_HTML  = NO
-BUILD_SPHINX_PS    = NO
 BUILD_SPHINX_PDF   = NO
 BUILD_MAN          = NO
index 0e045ae..9f1e2e2 100644 (file)
@@ -6,6 +6,5 @@ BUILD_PROF_LIBS    = NO
 SplitObjs          = NO
 HADDOCK_DOCS       = NO
 BUILD_SPHINX_HTML  = NO
-BUILD_SPHINX_PS    = NO
 BUILD_SPHINX_PDF   = NO
 BUILD_MAN          = NO
index ba95632..69c0385 100644 (file)
@@ -6,6 +6,5 @@ BUILD_PROF_LIBS    = NO
 SplitObjs          = NO
 HADDOCK_DOCS       = NO
 BUILD_SPHINX_HTML  = NO
-BUILD_SPHINX_PS    = NO
 BUILD_SPHINX_PDF   = NO
 BUILD_MAN          = NO
index cb38bd5..1d18641 100644 (file)
@@ -7,7 +7,6 @@ BUILD_PROF_LIBS    = NO
 SplitObjs          = NO
 HADDOCK_DOCS       = YES
 BUILD_SPHINX_HTML  = YES
-BUILD_SPHINX_PS    = NO
 BUILD_SPHINX_PDF   = NO
 
 ifeq "$(ValidateHpc)" "YES"