# -----------------------------------------------------------------------------
# A Sample build.mk
#
# Uncomment one of the following BuildFlavour settings to get the desired
# overall build type.

# -------- Build profiles -----------------------------------------------------
# Uncomment one of these to select a build profile below:

# Full build with max optimisation and everything enabled (very slow build)
BuildFlavour = perf

# As above but build GHC using the LLVM backend
#BuildFlavour = perf-llvm

# Perf build configured for a cross-compiler (using the LLVM backend)
#BuildFlavour = perf-cross

# Perf build configured for a cross-compiler (using the NCG backend)
#BuildFlavour = perf-cross-ncg

# Fast build with optimised libraries, no profiling (RECOMMENDED):
#BuildFlavour = quick

# Fast build with optimised libraries, no profiling, with LLVM:
#BuildFlavour = quick-llvm

# Fast build configured for a cross compiler (using the LLVM backend)
#BuildFlavour = quick-cross

# Fast build configured for a cross compiler (using the NCG backend)
#BuildFlavour = quick-cross-ncg

# Even faster build.  NOT RECOMMENDED: the libraries will be
# completely unoptimised, so any code built with this compiler
# (including stage2) will run very slowly, and many GHC tests
# will fail with this profile (see Trac #12141):
#BuildFlavour = quickest

# Profile the stage2 compiler:
#BuildFlavour = prof

# Profile the stage2 compiler (LLVM backend):
#BuildFlavour = prof-llvm

# A development build, working on the stage 1 compiler:
#BuildFlavour = devel1

# A development build, working on the stage 2 compiler:
#BuildFlavour = devel2

# A build with max optimisation that still builds the stage2 compiler
# quickly. Compiled code will be the same as with "perf". Programs
# will compile more slowly.
#BuildFlavour = bench

# As above but build GHC using the LLVM backend
#BuildFlavour = bench-llvm

# Bench build configured for a cross-compiler (using the LLVM backend)
#BuildFlavour = bench-cross

# Bench build configured for a cross-compiler (using the NCG backend)
#BuildFlavour = bench-cross-ncg

# 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 (the default) when reporting GHC bugs.
V=0

# Should all enabled warnings (see mk/warnings.mk) be turned into errors while
# building stage 2?
#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
# you comment the line again.  This is a useful trick for when you're
# working on stage 2 and want to freeze stage 1 and the libraries for
# a while.

# Enable these if you would like DWARF debugging symbols for your libraries.
# This is necessary, for instance, to get DWARF stack traces out of programs
# built by the produced compiler. You must also pass --enable-dwarf-unwind to
# `configure` to enable the runtime system's builtin unwinding support.
#GhcLibHcOpts += -g3
#GhcRtsHcOpts += -g3

# Build the "extra" packages (see ./packages). This enables more tests. See:
# https://ghc.haskell.org/trac/ghc/wiki/Building/RunningTests/Running#AdditionalPackages
#BUILD_EXTRA_PKGS=YES

# Uncomment the following line to enable building DPH
#BUILD_DPH=YES

# Uncomment the following to force `integer-gmp` to use the in-tree GMP 6.1.2
# (other sometimes useful configure-options: `--with-gmp-{includes,libraries}`)
#libraries/integer-gmp_CONFIGURE_OPTS += --configure-option=--with-intree-gmp

# Enable pretty hyperlinked sources
#HADDOCK_DOCS = YES
#EXTRA_HADDOCK_OPTS += --quickjump --hyperlinked-source

# Don't strip debug and other unneeded symbols from libraries and executables.
STRIP_CMD = :
