GHC new build system megapatch
[ghc-hetmet.git] / mk / build.mk.sample
index 8541e51..7368a22 100644 (file)
 
 # Uncomment one of these to select a build profile below:
 
-#BuildFlavour = devel
+# Full build with max optimisation (slow build)
 #BuildFlavour = perf
 
+# Fastest build (libs unoptimised):
+#BuildFlavour = quickest
+
+# Fast build with optimised libraries:
+#BuildFlavour = quick
+
+# A development build, working on the stage 1 compiler:
+#BuildFlavour = devel1
+
+# A development build, working on the stage 2 compiler:
+#BuildFlavour = devel2
+
 # Which warnings we like to use
 MyWarningOpts   = -W -fno-warn-unused-matches -fwarn-unused-imports
 
-# -------- 1. A Development build --------------------------------------------
+GhcLibWays = v
 
-ifeq "$(BuildFlavour)" "devel"
+# -------- 1. A Performance/Distribution build--------------------------------
 
-GhcCompilerWays =
+ifeq "$(BuildFlavour)" "perf"
 
-SRC_HC_OPTS     = -H32m -O -fasm $(MyWarningOpts)
-GhcLibHcOpts    = -O -dcore-lint $(MyWarningOpts)
-GhcLibWays      =
+# perf matches the default settings, repeated here for comparison:
 
-# If you're working on the stage1 compiler, build stage1 with debugging:
-GhcStage1HcOpts = -Rghc-timing -O0 -DDEBUG
+SRC_HC_OPTS     = -O -H64m
+GhcStage1HcOpts = -O -fasm
+GhcStage2HcOpts = -O2 -fasm
+GhcHcOpts       = -Rghc-timing
+GhcLibHcOpts    = -O2 -XGenerics
+GhcLibWays     += p
 
-# alternatively, to work on the stage 2 compiler:
-# GhcStage2HcOpts = -Rghc-timing -O0 -DDEBUG
+endif
 
-# profiled RTS
-#GhcRtsCcOpts =  -pg -g
+# -------- A Fast build ------------------------------------------------------
 
-# Optimised/profiled RTS
-#GhcRtsCcOpts = -O2 -pg
+ifeq "$(BuildFlavour)" "quickest"
 
-#GhcRtsWithFrontPanel = YES
-#SRC_HC_OPTS += `gtk-config --libs`
+SRC_HC_OPTS     = -H64m -O0 -fasm
+GhcStage1HcOpts = -O -fasm
+GhcStage2HcOpts = -O0 -fasm
+GhcLibHcOpts    = -O0 -fasm
+SplitObjs       = NO
 
-SplitObjs = NO
+endif
 
-NoFibWays =
-SRC_RUNTEST_OPTS += +RTS -H10m -RTS
-STRIP=:
+# -------- A Fast build with optimised libs ----------------------------------
+
+ifeq "$(BuildFlavour)" "quick"
+
+SRC_HC_OPTS     = -H64m -O0 -fasm
+GhcStage1HcOpts = -O -fasm
+GhcStage2HcOpts = -O0 -fasm
+GhcLibHcOpts    = -O -fasm
+SplitObjs       = NO
 
 endif
 
-# -------- 1. A Performance/Distribution build--------------------------------
+# -------- A Development build (stage 1) -------------------------------------
 
-ifeq "$(BuildFlavour)" "perf"
+ifeq "$(BuildFlavour)" "devel1"
 
-SRC_HC_OPTS   = -H32m -O $(MyWarningOpts)
-GhcHcOpts     = -Rghc-timing
-GhcLibHcOpts  =
+SRC_HC_OPTS     = -H64m -O -fasm $(MyWarningOpts)
+GhcLibHcOpts    = -O -dcore-lint $(MyWarningOpts)
+GhcStage1HcOpts = -Rghc-timing -O0 -DDEBUG
+GhcStage2HcOpts = -Rghc-timing -O -fasm
+SplitObjs = NO
+
+endif
+
+# -------- A Development build (stage 2) -------------------------------------
 
-GhcLibWays    = p
+ifeq "$(BuildFlavour)" "devel2"
+
+SRC_HC_OPTS     = -H64m -O -fasm $(MyWarningOpts)
+GhcLibHcOpts    = -O -dcore-lint $(MyWarningOpts)
+GhcStage1HcOpts = -Rghc-timing -O -fasm
+GhcStage2HcOpts = -Rghc-timing -O0 -DDEBUG
+SplitObjs = NO
 
-#GhcRtsCcOpts = -O2 -fomit-frame-pointer -mpreferred-stack-boundary=2 -march=pentiumpro
 endif
+
+# -----------------------------------------------------------------------------
+# Other settings that might be useful
+
+# profiled RTS
+#GhcRtsCcOpts =  -pg -g
+
+# Optimised/profiled RTS
+#GhcRtsCcOpts = -O2 -pg
+
+#GhcRtsWithFrontPanel = YES
+#SRC_HC_OPTS += `gtk-config --libs`
+
+# NoFib settings
+NoFibWays =
+STRIP=: