# Uncomment one of these to select a build profile below:
-#BuildFlavour = devel
+# Full build with max optimisation and everything enabled (very slow build)
#BuildFlavour = perf
-# Which warnings we like to use
-MyWarningOpts = -W -fno-warn-unused-matches -fwarn-unused-imports
+# Fast build with optimised libraries, no profiling (RECOMMENDED):
+#BuildFlavour = quick
-# -------- 1. A Development build --------------------------------------------
+# Even faster build. NOT RECOMMENDED: the libraries will be
+# completely unoptimised, so any code built with this compiler
+# (including stage2) will run very slowly:
+#BuildFlavour = quickest
-ifeq "$(BuildFlavour)" "devel"
+# Profile the stage2 compiler:
+#BuildFlavour = prof
-GhcCompilerWays =
+# A development build, working on the stage 1 compiler:
+#BuildFlavour = devel1
-SRC_HC_OPTS = -H32m -O -fasm $(MyWarningOpts)
-GhcLibHcOpts = -O -dcore-lint $(MyWarningOpts)
-GhcLibWays =
+# A development build, working on the stage 2 compiler:
+#BuildFlavour = devel2
-# If you're working on the stage1 compiler, build stage1 with debugging:
-GhcStage1HcOpts = -Rghc-timing -O0 -DDEBUG
+GhcLibWays = v
-# alternatively, to work on the stage 2 compiler:
-# GhcStage2HcOpts = -Rghc-timing -O0 -DDEBUG
+# -------- 1. A Performance/Distribution build--------------------------------
-# profiled RTS
-#GhcRtsCcOpts = -pg -g
+ifeq "$(BuildFlavour)" "perf"
-# Optimised/profiled RTS
-#GhcRtsCcOpts = -O2 -pg
+# perf matches the default settings, repeated here for comparison:
-#GhcRtsWithFrontPanel = YES
-#SRC_HC_OPTS += `gtk-config --libs`
+SRC_HC_OPTS = -O -H64m
+GhcStage1HcOpts = -O -fasm
+GhcStage2HcOpts = -O2 -fasm
+GhcHcOpts = -Rghc-timing
+GhcLibHcOpts = -O2
+GhcLibWays += p
-SplitObjs = NO
+ifeq "$(PlatformSupportsSharedLibs)" "YES"
+GhcLibWays += dyn
+endif
-NoFibWays =
-SRC_RUNTEST_OPTS += +RTS -H10m -RTS
-STRIP=:
+endif
+
+# -------- A Fast build ------------------------------------------------------
+
+ifeq "$(BuildFlavour)" "quickest"
+
+SRC_HC_OPTS = -H64m -O0 -fasm
+GhcStage1HcOpts = -O -fasm
+GhcStage2HcOpts = -O0 -fasm
+GhcLibHcOpts = -O0 -fasm
+SplitObjs = NO
+HADDOCK_DOCS = NO
+BUILD_DOCBOOK_HTML = NO
+BUILD_DOCBOOK_PS = NO
+BUILD_DOCBOOK_PDF = NO
endif
-# -------- 1. A Performance/Distribution build--------------------------------
+# -------- A Fast build with optimised libs ----------------------------------
-ifeq "$(BuildFlavour)" "perf"
+ifeq "$(BuildFlavour)" "quick"
+
+SRC_HC_OPTS = -H64m -O0 -fasm
+GhcStage1HcOpts = -O -fasm
+GhcStage2HcOpts = -O0 -fasm
+GhcLibHcOpts = -O -fasm
+SplitObjs = NO
+HADDOCK_DOCS = NO
+BUILD_DOCBOOK_HTML = NO
+BUILD_DOCBOOK_PS = NO
+BUILD_DOCBOOK_PDF = NO
+
+endif
+
+# -------- Profile the stage2 compiler ---------------------------------------
+
+ifeq "$(BuildFlavour)" "prof"
+
+SRC_HC_OPTS = -H64m -O0 -fasm
+GhcStage1HcOpts = -O -fasm
+GhcStage2HcOpts = -O -fasm
+GhcLibHcOpts = -O -fasm
-SRC_HC_OPTS = -H32m -O $(MyWarningOpts)
-GhcHcOpts = -Rghc-timing
-GhcLibHcOpts =
+GhcLibWays += p
+GhcProfiled = YES
-GhcLibWays = p
+SplitObjs = NO
+HADDOCK_DOCS = NO
+BUILD_DOCBOOK_HTML = NO
+BUILD_DOCBOOK_PS = NO
+BUILD_DOCBOOK_PDF = NO
-#GhcRtsCcOpts = -O2 -fomit-frame-pointer -mpreferred-stack-boundary=2 -march=pentiumpro
endif
+
+
+# -------- A Development build (stage 1) -------------------------------------
+
+ifeq "$(BuildFlavour)" "devel1"
+
+SRC_HC_OPTS = -H64m -O -fasm
+GhcLibHcOpts = -O -dcore-lint
+GhcStage1HcOpts = -Rghc-timing -O0 -DDEBUG
+GhcStage2HcOpts = -Rghc-timing -O -fasm
+SplitObjs = NO
+HADDOCK_DOCS = NO
+BUILD_DOCBOOK_HTML = NO
+BUILD_DOCBOOK_PS = NO
+BUILD_DOCBOOK_PDF = NO
+
+endif
+
+# -------- A Development build (stage 2) -------------------------------------
+
+ifeq "$(BuildFlavour)" "devel2"
+
+SRC_HC_OPTS = -H64m -O -fasm
+GhcLibHcOpts = -O -dcore-lint
+GhcStage1HcOpts = -Rghc-timing -O -fasm
+GhcStage2HcOpts = -Rghc-timing -O0 -DDEBUG
+SplitObjs = NO
+HADDOCK_DOCS = NO
+BUILD_DOCBOOK_HTML = NO
+BUILD_DOCBOOK_PS = NO
+BUILD_DOCBOOK_PDF = NO
+
+endif
+
+# -----------------------------------------------------------------------------
+# Other settings that might be useful
+
+# NoFib settings
+NoFibWays =
+STRIP_CMD = :