build.mk.sample 4.82 KB
Newer Older
1
2
3
4
5
6
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.

8
9
# Uncomment one of these to select a build profile below:

Simon Marlow's avatar
Simon Marlow committed
10
# Full build with max optimisation and everything enabled (very slow build)
11
12
#BuildFlavour = perf

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

Simon Marlow's avatar
Simon Marlow committed
16
# Fast build with optimised libraries, no profiling (RECOMMENDED):
17
18
#BuildFlavour = quick

Simon Marlow's avatar
Simon Marlow committed
19
20
21
22
23
# 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

24
25
26
# Profile the stage2 compiler:
#BuildFlavour = prof

27
28
29
30
31
32
# A development build, working on the stage 1 compiler:
#BuildFlavour = devel1

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

33
34
35
# An unregisterised, optimised build of ghc, for porting:
#BuildFlavour = unreg

Ian Lynagh's avatar
Ian Lynagh committed
36
37
GhcLibWays = v

38
39
40
41
# -------- 1. A Performance/Distribution build--------------------------------

ifeq "$(BuildFlavour)" "perf"

42
43
44
45
46
47
# perf matches the default settings, repeated here for comparison:

SRC_HC_OPTS     = -O -H64m
GhcStage1HcOpts = -O -fasm
GhcStage2HcOpts = -O2 -fasm
GhcHcOpts       = -Rghc-timing
48
GhcLibHcOpts    = -O2
Ian Lynagh's avatar
Ian Lynagh committed
49
GhcLibWays     += p
50

51
52
53
54
ifeq "$(PlatformSupportsSharedLibs)" "YES"
GhcLibWays += dyn
endif

55
endif
56

57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# ---------------- Perf build using LLVM -------------------------------------

ifeq "$(BuildFlavour)" "perf-llvm"

SRC_HC_OPTS     = -O -H64m -fllvm
GhcStage1HcOpts = -O -fllvm
GhcStage2HcOpts = -O2 -fllvm
GhcHcOpts       = -Rghc-timing
GhcLibHcOpts    = -O2
GhcLibWays     += p

ifeq "$(PlatformSupportsSharedLibs)" "YES"
GhcLibWays += dyn
endif

endif

74
# -------- A Fast build ------------------------------------------------------
75

76
77
ifeq "$(BuildFlavour)" "quickest"

78
79
80
81
82
83
84
85
86
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
Simon Marlow's avatar
Simon Marlow committed
87

88
endif
Simon Marlow's avatar
Simon Marlow committed
89

90
# -------- A Fast build with optimised libs ----------------------------------
91

92
ifeq "$(BuildFlavour)" "quick"
93

94
95
96
97
98
99
100
101
102
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
103

104
endif
105

106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# -------- Profile the stage2 compiler ---------------------------------------

ifeq "$(BuildFlavour)" "prof"

SRC_HC_OPTS        = -H64m -O0 -fasm
GhcStage1HcOpts    = -O -fasm
GhcStage2HcOpts    = -O -fasm
GhcLibHcOpts       = -O -fasm

GhcLibWays         += p
GhcProfiled        = YES

SplitObjs          = NO
HADDOCK_DOCS       = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS   = NO
BUILD_DOCBOOK_PDF  = NO

endif


127
128
129
130
# -------- A Development build (stage 1) -------------------------------------

ifeq "$(BuildFlavour)" "devel1"

131
132
SRC_HC_OPTS        = -H64m -O -fasm
GhcLibHcOpts       = -O -dcore-lint
133
134
135
136
137
138
139
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
140
LAX_DEPENDENCIES   = YES
141

142
143
144
145
146
147
endif

# -------- A Development build (stage 2) -------------------------------------

ifeq "$(BuildFlavour)" "devel2"

148
149
SRC_HC_OPTS        = -H64m -O -fasm
GhcLibHcOpts       = -O -dcore-lint
150
151
152
153
154
155
156
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
157
LAX_DEPENDENCIES   = YES
158

159
160
161
162
163
# 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
Simon Marlow's avatar
Simon Marlow committed
164
# you comment the line again.  This is a useful trick for when you're
165
166
167
# working on stage 2 and want to freeze stage 1 and the libraries for
# a while.

168
169
endif

170
171
172
173
# -------- A Unregisterised build) -------------------------------------------

ifeq "$(BuildFlavour)" "unreg"

174
175
176
177
# Note that the LLVM backend works in unregisterised mode as well as
# registerised mode. This often makes it a good choice for porting
# GHC.

178
179
180
GhcUnregisterised    = YES
GhcWithNativeCodeGen = NO

181
SRC_HC_OPTS          = -O -H64m # -fllvm
182
183
184
185
186
187
188
189
190
191
192
193
GhcStage1HcOpts      = -O
GhcStage2HcOpts      = -O2
GhcHcOpts            = -Rghc-timing
GhcLibHcOpts         = -O2
SplitObjs            = NO
HADDOCK_DOCS         = NO
BUILD_DOCBOOK_HTML   = NO
BUILD_DOCBOOK_PS     = NO
BUILD_DOCBOOK_PDF    = NO

endif

194
195
# -----------------------------------------------------------------------------
# Other settings that might be useful
196

197
198
# NoFib settings
NoFibWays =
199
STRIP_CMD = :
200