Commit 2c24fd70 authored by thomie's avatar thomie

Build system: put each BuildFlavour in a separate file (#10223)

This allows easier diffing of different BuildFlavours, including
`mk/flavours/validate.mk`.

Reviewed By: bgamari, austin

Differential Revision: https://phabricator.haskell.org/D1050
parent 062feee4
......@@ -2,8 +2,7 @@
# A Sample build.mk
#
# Uncomment one of the following BuildFlavour settings to get the desired
# overall build type, and then tweak the options in the relevant section
# below.
# overall build type.
# -------- Build profiles -----------------------------------------------------
# Uncomment one of these to select a build profile below:
......@@ -51,17 +50,23 @@
# Bench build configured for a cross-compiler
#BuildFlavour = bench-cross
# Use the same settings as validate.
#BuildFlavour = validate
ifneq "$(BuildFlavour)" ""
include mk/flavours/$(BuildFlavour).mk
endif
# -------- Miscellaneous variables --------------------------------------------
# Set to V = 0 to get prettier build output.
# Please use V = 1 when reporting GHC bugs.
V = 1
# Please use V=1 (the default) when reporting GHC bugs.
#V=0
# Should all enabled warnings (see mk/warnings.mk) be turned into errors?
#WERROR=-Werror
# After stage 1 and the libraries have been built, you can uncomment this line:
#stage=2
# Then stage 1 will not be touched by the build system, until
......@@ -80,254 +85,5 @@ V = 1
# (other sometimes useful configure-options: `--with-gmp-{includes,libraries}`)
#libraries/integer-gmp_CONFIGURE_OPTS += --configure-option=--with-intree-gmp
# ----------- A Performance/Distribution build --------------------------------
ifeq "$(BuildFlavour)" "perf"
# perf matches the default settings, repeated here for comparison:
SRC_HC_OPTS = -O -H64m
GhcStage1HcOpts = -O
GhcStage2HcOpts = -O2
GhcLibHcOpts = -O2
BUILD_PROF_LIBS = YES
#SplitObjs
#HADDOCK_DOCS
#BUILD_DOCBOOK_HTML
#BUILD_DOCBOOK_PS
#BUILD_DOCBOOK_PDF
endif
# ---------------- Perf build using LLVM --------------------------------------
ifeq "$(BuildFlavour)" "perf-llvm"
SRC_HC_OPTS = -O -H64m -fllvm
GhcStage1HcOpts = -O -fllvm
GhcStage2HcOpts = -O2 -fllvm
GhcLibHcOpts = -O2
BUILD_PROF_LIBS = YES
#SplitObjs
#HADDOCK_DOCS
#BUILD_DOCBOOK_HTML
#BUILD_DOCBOOK_PS
#BUILD_DOCBOOK_PDF
endif
# ------- A Perf build configured for cross-compilation ----------------------
ifeq "$(BuildFlavour)" "perf-cross"
SRC_HC_OPTS = -O -H64m -fllvm
GhcStage1HcOpts = -O2
GhcStage2HcOpts = -O2 -fllvm
GhcLibHcOpts = -O2
BUILD_PROF_LIBS = YES
#SplitObjs
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
INTEGER_LIBRARY = integer-simple
Stage1Only = YES
DYNAMIC_BY_DEFAULT = NO
DYNAMIC_GHC_PROGRAMS = NO
endif
# -------- A Fast build -------------------------------------------------------
ifeq "$(BuildFlavour)" "quickest"
SRC_HC_OPTS = -H64m -O0
GhcStage1HcOpts = -O
GhcStage2HcOpts = -O0
GhcLibHcOpts = -O0
BUILD_PROF_LIBS = NO
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
endif
# -------- A Fast build with optimised libs -----------------------------------
ifeq "$(BuildFlavour)" "quick"
SRC_HC_OPTS = -H64m -O0
GhcStage1HcOpts = -O
GhcStage2HcOpts = -O0
GhcLibHcOpts = -O
BUILD_PROF_LIBS = NO
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
endif
# -------- A Fast build with optimised libs using LLVM ------------------------
ifeq "$(BuildFlavour)" "quick-llvm"
SRC_HC_OPTS = -H64m -O0 -fllvm
GhcStage1HcOpts = -O -fllvm
GhcStage2HcOpts = -O0 -fllvm
GhcLibHcOpts = -O -fllvm
BUILD_PROF_LIBS = NO
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
endif
# -------- A Fast build configured for cross-compilation ----------------------
ifeq "$(BuildFlavour)" "quick-cross"
SRC_HC_OPTS = -H64m -O0
GhcStage1HcOpts = -O
GhcStage2HcOpts = -O0 -fllvm
GhcLibHcOpts = -O -fllvm
BUILD_PROF_LIBS = NO
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
INTEGER_LIBRARY = integer-simple
Stage1Only = YES
DYNAMIC_BY_DEFAULT = NO
DYNAMIC_GHC_PROGRAMS = NO
endif
# -------- Profile the stage2 compiler ----------------------------------------
ifeq "$(BuildFlavour)" "prof"
SRC_HC_OPTS = -H64m -O0
GhcStage1HcOpts = -O
GhcStage2HcOpts = -O
GhcLibHcOpts = -O
BUILD_PROF_LIBS = YES
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
GhcProfiled = YES
endif
# -------- A Development build (stage 1) --------------------------------------
ifeq "$(BuildFlavour)" "devel1"
SRC_HC_OPTS = -H64m -O
GhcStage1HcOpts = -O0 -DDEBUG
GhcStage2HcOpts = -O
GhcLibHcOpts = -O -dcore-lint
BUILD_PROF_LIBS = NO
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
LAX_DEPENDENCIES = YES
endif
# -------- A Development build (stage 2) --------------------------------------
ifeq "$(BuildFlavour)" "devel2"
SRC_HC_OPTS = -H64m -O
GhcStage1HcOpts = -O
GhcStage2HcOpts = -O0 -DDEBUG
GhcLibHcOpts = -O -dcore-lint
BUILD_PROF_LIBS = NO
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
LAX_DEPENDENCIES = YES
endif
# -------- A bench build with optimised libs -----------------------------------
ifeq "$(BuildFlavour)" "bench"
SRC_HC_OPTS = -O -H64m
GhcStage1HcOpts = -O
GhcStage2HcOpts = -O0
GhcLibHcOpts = -O2
BUILD_PROF_LIBS = NO
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
endif
# ---------------- Bench build using LLVM --------------------------------------
ifeq "$(BuildFlavour)" "bench-llvm"
SRC_HC_OPTS = -O -H64m
GhcStage1HcOpts = -O -fllvm
GhcStage2HcOpts = -O0 -fllvm
GhcLibHcOpts = -O2 -fllvm
BUILD_PROF_LIBS = NO
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
endif
# ------- A Bench build configured for cross-compilation ----------------------
ifeq "$(BuildFlavour)" "bench-cross"
SRC_HC_OPTS = -O -H64m
GhcStage1HcOpts = -O
GhcStage2HcOpts = -O0
GhcLibHcOpts = -O2
BUILD_PROF_LIBS = NO
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
INTEGER_LIBRARY = integer-simple
Stage1Only = YES
DYNAMIC_BY_DEFAULT = NO
DYNAMIC_GHC_PROGRAMS = NO
endif
# -----------------------------------------------------------------------------
# Other settings that might be useful
# NoFib settings
NoFibWays =
# Don't strip debug and other unneeded symbols from libraries and executables.
STRIP_CMD = :
......@@ -2,7 +2,7 @@
-include mk/are-validating.mk
ifeq "$(Validating)" "YES"
include mk/validate-settings.mk
include mk/flavours/validate.mk
-include mk/validate.mk
else
-include $(firstword $(wildcard mk/$(TargetPlatformFull)-build.mk) mk/build.mk)
......
SRC_HC_OPTS = -O -H64m
GhcStage1HcOpts = -O
GhcStage2HcOpts = -O0
GhcLibHcOpts = -O2
BUILD_PROF_LIBS = NO
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
INTEGER_LIBRARY = integer-simple
Stage1Only = YES
DYNAMIC_BY_DEFAULT = NO
DYNAMIC_GHC_PROGRAMS = NO
SRC_HC_OPTS = -O -H64m
GhcStage1HcOpts = -O -fllvm
GhcStage2HcOpts = -O0 -fllvm
GhcLibHcOpts = -O2 -fllvm
BUILD_PROF_LIBS = NO
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
SRC_HC_OPTS = -O -H64m
GhcStage1HcOpts = -O
GhcStage2HcOpts = -O0
GhcLibHcOpts = -O2
BUILD_PROF_LIBS = NO
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
SRC_HC_OPTS = -O -H64m
GhcStage1HcOpts = -O0 -DDEBUG
GhcStage2HcOpts = -O
GhcLibHcOpts = -O -dcore-lint
BUILD_PROF_LIBS = NO
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
LAX_DEPENDENCIES = YES
SRC_HC_OPTS = -O -H64m
GhcStage1HcOpts = -O
GhcStage2HcOpts = -O0 -DDEBUG
GhcLibHcOpts = -O -dcore-lint
BUILD_PROF_LIBS = NO
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
LAX_DEPENDENCIES = YES
SRC_HC_OPTS = -O -H64m -fllvm
GhcStage1HcOpts = -O2
GhcStage2HcOpts = -O2 -fllvm
GhcLibHcOpts = -O2
BUILD_PROF_LIBS = YES
#SplitObjs
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
INTEGER_LIBRARY = integer-simple
Stage1Only = YES
DYNAMIC_BY_DEFAULT = NO
DYNAMIC_GHC_PROGRAMS = NO
SRC_HC_OPTS = -O -H64m -fllvm
GhcStage1HcOpts = -O -fllvm
GhcStage2HcOpts = -O2 -fllvm
GhcLibHcOpts = -O2
BUILD_PROF_LIBS = YES
#SplitObjs
#HADDOCK_DOCS
#BUILD_DOCBOOK_HTML
#BUILD_DOCBOOK_PS
#BUILD_DOCBOOK_PDF
SRC_HC_OPTS = -O -H64m
GhcStage1HcOpts = -O
GhcStage2HcOpts = -O2
GhcLibHcOpts = -O2
BUILD_PROF_LIBS = YES
#SplitObjs
#HADDOCK_DOCS
#BUILD_DOCBOOK_HTML
#BUILD_DOCBOOK_PS
#BUILD_DOCBOOK_PDF
SRC_HC_OPTS = -O0 -H64m
GhcStage1HcOpts = -O
GhcStage2HcOpts = -O
GhcLibHcOpts = -O
BUILD_PROF_LIBS = YES
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
GhcProfiled = YES
SRC_HC_OPTS = -O0 -H64m
GhcStage1HcOpts = -O
GhcStage2HcOpts = -O0 -fllvm
GhcLibHcOpts = -O -fllvm
BUILD_PROF_LIBS = NO
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
INTEGER_LIBRARY = integer-simple
Stage1Only = YES
DYNAMIC_BY_DEFAULT = NO
DYNAMIC_GHC_PROGRAMS = NO
SRC_HC_OPTS = -O0 -H64m -fllvm
GhcStage1HcOpts = -O -fllvm
GhcStage2HcOpts = -O0 -fllvm
GhcLibHcOpts = -O -fllvm
BUILD_PROF_LIBS = NO
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
SRC_HC_OPTS = -O0 -H64m
GhcStage1HcOpts = -O
GhcStage2HcOpts = -O0
GhcLibHcOpts = -O
BUILD_PROF_LIBS = NO
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
SRC_HC_OPTS = -O0 -H64m
GhcStage1HcOpts = -O
GhcStage2HcOpts = -O0
GhcLibHcOpts = -O0
BUILD_PROF_LIBS = NO
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
SRC_HC_OPTS = -O0 -H64m
GhcStage1HcOpts = -O
GhcStage2HcOpts = -O -dcore-lint
GhcLibHcOpts = -O -dcore-lint
BUILD_PROF_LIBS = NO
SplitObjs = NO
HADDOCK_DOCS = YES
BUILD_DOCBOOK_HTML = YES
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
ifeq "$(ValidateHpc)" "YES"
GhcStage2HcOpts += -fhpc -hpcdir $(TOP)/testsuite/hpc_output/
endif
ifeq "$(ValidateSpeed)" "SLOW"
GhcStage2HcOpts += -DDEBUG
endif
InstallExtraPackages = YES
WERROR = -Werror
# DO NOT EDIT THIS FILE! Instead, create a file mk/validate.mk, whose settings
# will override these. See also mk/custom-settings.mk.
#
#
# (Note: these comments are at the end of this file, to make it easier to diff
# this file with other build flavours.)
#
#
# Note [validate build settings]
#
# Using GhcStage2HcOpts=-O (rather than -O0) here bringes my validate down from
# 22mins to 16 mins. Compiling stage2 takes longer, but we gain a faster
# haddock, faster running of the tests, and faster building of the utils to be
# installed
#
# dblatex with miktex under msys/mingw can't build the PS and PDF docs,
# and just building the HTML docs is sufficient to check that the
# markup is correct, so we turn off PS and PDF doc building when
# validating.
#
# We set InstallExtraPackages=YES, because we want to install the "extra"
# packages, so that we can test them.
# DO NOT EDIT! Instead, create a file mk/validate.mk, whose settings will
# override these. See also mk/custom-settings.mk.
WERROR = -Werror
HADDOCK_DOCS = YES
SRC_HC_OPTS += -H64m -O0
GhcStage1HcOpts += -O
GhcStage2HcOpts += -O -dcore-lint
# Using -O (rather than -O0) here bringes my validate down from 22mins to 16 mins.
# Compiling stage2 takes longer, but we gain a faster haddock, faster
# running of the tests, and faster building of the utils to be installed
GhcLibHcOpts += -O -dcore-lint
BUILD_PROF_LIBS = NO
SplitObjs = NO
NoFibWays =
STRIP_CMD = :
# We want to install DPH when validating, so that we can test it
InstallExtraPackages = YES
# dblatex with miktex under msys/mingw can't build the PS and PDF docs,
# and just building the HTML docs is sufficient to check that the
# markup is correct, so we turn off PS and PDF doc building when
# validating.
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
ifeq "$(ValidateHpc)" "YES"
GhcStage2HcOpts += -fhpc -hpcdir $(TOP)/testsuite/hpc_output/
endif
ifeq "$(ValidateSpeed)" "SLOW"
GhcStage2HcOpts += -DDEBUG
endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment