PKGBUILDs/extra/ghc/build.mk

292 lines
7.3 KiB
Makefile
Raw Normal View History

2013-01-31 17:29:38 +00:00
# -----------------------------------------------------------------------------
# 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.
2015-04-06 05:11:07 +00:00
# -------- Build profiles -----------------------------------------------------
2013-01-31 17:29:38 +00:00
# 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
2015-04-06 05:11:07 +00:00
# Perf build configured for a cross-compiler
#BuildFlavour = perf-cross
2013-01-31 17:29:38 +00:00
# Fast build with optimised libraries, no profiling (RECOMMENDED):
#BuildFlavour = quick
2015-04-06 05:11:07 +00:00
# Fast build with optimised libraries, no profiling, with LLVM:
#BuildFlavour = quick-llvm
# Fast build configured for a cross compiler
#BuildFlavour = quick-cross
2013-01-31 17:29:38 +00:00
# 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
# Profile the stage2 compiler:
#BuildFlavour = prof
# A development build, working on the stage 1 compiler:
#BuildFlavour = devel1
# A development build, working on the stage 2 compiler:
#BuildFlavour = devel2
2015-04-06 05:11:07 +00:00
# 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
#BuildFlavour = bench-cross
# -------- Miscellaneous variables --------------------------------------------
# Set to V = 0 to get prettier build output.
# Please use V = 1 when reporting GHC bugs.
V = 1
# 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.
# Uncomment the following line to enable building DPH
#BUILD_DPH=YES
GhcLibWays = $(if $(filter $(DYNAMIC_GHC_PROGRAMS),YES),v dyn,v)
2013-01-31 17:29:38 +00:00
2015-04-06 05:11:07 +00:00
# Only use -fasm by default on platforms that support it.
GhcFAsm = $(if $(filter $(GhcWithNativeCodeGen),YES),-fasm,)
2013-01-31 17:29:38 +00:00
2015-04-06 05:11:07 +00:00
# ----------- A Performance/Distribution build --------------------------------
2013-01-31 17:29:38 +00:00
ifeq "$(BuildFlavour)" "perf"
# perf matches the default settings, repeated here for comparison:
SRC_HC_OPTS = -O -H64m
2015-04-06 05:11:07 +00:00
GhcStage1HcOpts = -O $(GhcFAsm)
GhcStage2HcOpts = -O2 $(GhcFAsm)
2013-01-31 17:29:38 +00:00
GhcHcOpts = -Rghc-timing
GhcLibHcOpts = -O2
GhcLibWays += p
ifeq "$(PlatformSupportsSharedLibs)" "YES"
GhcLibWays += dyn
endif
endif
2015-04-06 05:11:07 +00:00
# ---------------- Perf build using LLVM --------------------------------------
2013-01-31 17:29:38 +00:00
ifeq "$(BuildFlavour)" "perf-llvm"
2014-05-15 05:29:56 +00:00
SRC_HC_OPTS = -O -H64m -fllvm -optc-mlong-calls
2013-01-31 17:29:38 +00:00
GhcStage1HcOpts = -O -fllvm
GhcStage2HcOpts = -O2 -fllvm
GhcHcOpts = -Rghc-timing
GhcLibHcOpts = -O2
GhcLibWays += p
endif
2015-04-06 05:11:07 +00:00
# -------- A Fast build -------------------------------------------------------
2013-01-31 17:29:38 +00:00
ifeq "$(BuildFlavour)" "quickest"
2015-04-06 05:11:07 +00:00
SRC_HC_OPTS = -H64m -O0 $(GhcFAsm)
GhcStage1HcOpts = -O $(GhcFAsm)
GhcStage2HcOpts = -O0 $(GhcFAsm)
GhcLibHcOpts = -O0 $(GhcFAsm)
2013-01-31 17:29:38 +00:00
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
endif
2015-04-06 05:11:07 +00:00
# -------- A Fast build with optimised libs -----------------------------------
2013-01-31 17:29:38 +00:00
ifeq "$(BuildFlavour)" "quick"
2015-04-06 05:11:07 +00:00
SRC_HC_OPTS = -H64m -O0 $(GhcFAsm)
GhcStage1HcOpts = -O $(GhcFAsm)
GhcStage2HcOpts = -O0 $(GhcFAsm)
GhcLibHcOpts = -O $(GhcFAsm)
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
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
2013-01-31 17:29:38 +00:00
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
2015-04-06 05:11:07 +00:00
INTEGER_LIBRARY = integer-simple
Stage1Only = YES
DYNAMIC_BY_DEFAULT = NO
DYNAMIC_GHC_PROGRAMS = NO
2013-01-31 17:29:38 +00:00
endif
2015-04-06 05:11:07 +00:00
# -------- Profile the stage2 compiler ----------------------------------------
2013-01-31 17:29:38 +00:00
ifeq "$(BuildFlavour)" "prof"
2015-04-06 05:11:07 +00:00
SRC_HC_OPTS = -H64m -O0 $(GhcFAsm)
GhcStage1HcOpts = -O $(GhcFAsm)
GhcStage2HcOpts = -O $(GhcFAsm)
GhcLibHcOpts = -O $(GhcFAsm)
2013-01-31 17:29:38 +00:00
GhcLibWays += p
GhcProfiled = YES
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
endif
2015-04-06 05:11:07 +00:00
# -------- A Development build (stage 1) --------------------------------------
2013-01-31 17:29:38 +00:00
ifeq "$(BuildFlavour)" "devel1"
2015-04-06 05:11:07 +00:00
SRC_HC_OPTS = -H64m -O $(GhcFAsm)
2013-01-31 17:29:38 +00:00
GhcLibHcOpts = -O -dcore-lint
GhcStage1HcOpts = -Rghc-timing -O0 -DDEBUG
2015-04-06 05:11:07 +00:00
GhcStage2HcOpts = -Rghc-timing -O $(GhcFAsm)
2013-01-31 17:29:38 +00:00
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
LAX_DEPENDENCIES = YES
endif
2015-04-06 05:11:07 +00:00
# -------- A Development build (stage 2) --------------------------------------
2013-01-31 17:29:38 +00:00
ifeq "$(BuildFlavour)" "devel2"
2015-04-06 05:11:07 +00:00
SRC_HC_OPTS = -H64m -O $(GhcFAsm)
2013-01-31 17:29:38 +00:00
GhcLibHcOpts = -O -dcore-lint
2015-04-06 05:11:07 +00:00
GhcStage1HcOpts = -Rghc-timing -O $(GhcFAsm)
2013-01-31 17:29:38 +00:00
GhcStage2HcOpts = -Rghc-timing -O0 -DDEBUG
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
LAX_DEPENDENCIES = YES
2015-04-06 05:11:07 +00:00
endif
2013-01-31 17:29:38 +00:00
2015-04-06 05:11:07 +00:00
# -------- A bench build with optimised libs -----------------------------------
2013-01-31 17:29:38 +00:00
2015-04-06 05:11:07 +00:00
ifeq "$(BuildFlavour)" "bench"
SRC_HC_OPTS = -O -H64m
GhcStage1HcOpts = -O $(GhcFAsm)
GhcStage2HcOpts = -O0 $(GhcFAsm)
GhcLibHcOpts = -O2 $(GhcFAsm)
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
2013-01-31 17:29:38 +00:00
endif
2015-04-06 05:11:07 +00:00
# ---------------- Bench build using LLVM --------------------------------------
2013-01-31 17:29:38 +00:00
2015-04-06 05:11:07 +00:00
ifeq "$(BuildFlavour)" "bench-llvm"
2013-01-31 17:29:38 +00:00
2015-04-06 05:11:07 +00:00
SRC_HC_OPTS = -O -H64m
GhcStage1HcOpts = -O -fllvm
GhcStage2HcOpts = -O0 -fllvm
GhcLibHcOpts = -O2 -fllvm
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
2013-01-31 17:29:38 +00:00
2015-04-06 05:11:07 +00:00
endif
# ------- A Bench build configured for cross-compilation ----------------------
ifeq "$(BuildFlavour)" "bench-cross"
SRC_HC_OPTS = -O -H64m
GhcStage1HcOpts = -O $(GhcFAsm)
GhcStage2HcOpts = -O0 $(GhcFAsm)
GhcLibHcOpts = -O2 $(GhcFAsm)
SplitObjs = NO
INTEGER_LIBRARY = integer-simple
Stage1Only = YES
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
2013-01-31 17:29:38 +00:00
2015-04-06 05:11:07 +00:00
DYNAMIC_BY_DEFAULT = NO
DYNAMIC_GHC_PROGRAMS = NO
2013-01-31 17:29:38 +00:00
endif
# -----------------------------------------------------------------------------
# Other settings that might be useful
# NoFib settings
NoFibWays =
STRIP_CMD = :