config.mk.in 35.2 KB
Newer Older
chak's avatar
chak committed
1
#								 -*-makefile-*-
2
3
# @configure_input@
#
4
################################################################################
5
#
6
# config.mk.in
7
#
8
9
10
# This file supplies defaults for many tweakable build configuration
# options.  Some of the defaults are filled in by the autoconf-generated
# configure script.
11
#
12
# DO NOT EDIT THIS FILE!
13
#
14
15
16
17
# 	- config.mk is auto-generated from config.mk.in by configure.
#	  This may be triggered automatically by the build system (say
#	  if config.mk.in has changed more recently than config.mk),
#	  so if you edit config.mk your changes will be spammed.
18
#
19
#	- Settings in this file may be overriden by giving replacement
20
21
22
23
24
#	  definitions in build.mk.  See build.mk.sample for a good
#	  starting point for a build.mk file.
#
#	  If you don't have a build.mk file then you get defaults for everything.
#	  The defaults should provide a reasonable vanilla build.
25
26
27
28
#
# This is one of only two files that configure generates (the other is config.h)
#

29
ifneq "$(findstring 3.7, $(MAKE_VERSION))" ""
30
31
32
ifeq "$(findstring 3.79.1, $(MAKE_VERSION))" ""
$(error GNU make version 3.79.1 or later is required.)
endif
33
endif
34

Ian Lynagh's avatar
Ian Lynagh committed
35
36
37
# TOP: the top of the fptools hierarchy, absolute path.
# On Windows this is a c:/foo/bar style path.
TOP		= @hardtop@
sof's avatar
sof committed
38

Ian Lynagh's avatar
Ian Lynagh committed
39
include $(TOP)/mk/project.mk
sof's avatar
sof committed
40

41
42
43
44
45
46
################################################################################
#
#		Global configuration options
#
################################################################################

47
48
49
# BootingFromHc - build GHC and the libraries from .hc files?
BootingFromHc = @BootingFromHc@

ken's avatar
ken committed
50
51
52
53
# BootingFromUnregisterisedHc - treat .hc files as containing unregisterised
# rather than registerised code, i.e., disable the mangler?
BootingFromUnregisterisedHc = @BootingFromUnregisterisedHc@

Ian Lynagh's avatar
Ian Lynagh committed
54
55
56
NO_INCLUDE_DEPS = NO
NO_INCLUDE_PKGDATA = NO

57
58
#
# Which ways should DocBook XML documents be built?
59
# options are: dvi ps pdf html chm HxS
60
61
62
#
XMLDocWays=

Ian Lynagh's avatar
Ian Lynagh committed
63
64
65
# Should we build latex docs?
LATEX_DOCS = NO

66
67
# Mac OS X deployment target (to cross-compile for older OS versions)
#
68
69
70
71
72
MACOSX_DEPLOYMENT_VERSION = @MACOSX_DEPLOYMENT_VERSION@
MACOSX_DEPLOYMENT_SDK = @MACOSX_DEPLOYMENT_SDK@

ifneq "$(MACOSX_DEPLOYMENT_VERSION)" ""
MACOSX_DEPLOYMENT_CC_OPTS = -mmacosx-version-min=$(MACOSX_DEPLOYMENT_VERSION) \
73
74
			    -isysroot $(MACOSX_DEPLOYMENT_SDK) \
			    --no-builtin-fprintf
75
76
77
78
79
80
MACOSX_DEPLOYMENT_LD_OPTS = -mmacosx-version-min=$(MACOSX_DEPLOYMENT_VERSION) \
			    -Wl,-syslibroot,$(MACOSX_DEPLOYMENT_SDK)
# We don't extend SRC_CC_OPTS and friends here directly, as (a) they may get
# overwritten in build.mk and (b) we must not use the deployment options in
# stage 1 or we get a linker error if the bootstrap compiler is for a more 
# recent OS version.
81
82
83
84
#
# We need --no-builtin-fprintf, as the use of the builtin function optimisation
# for fprintf together with #include "PosixSource" in the RTS leads to the
# use of fwrite$UNIX2003 (with GCC 4.0.1 on Mac OS X 10.5.2).
85
endif
86

87
################################################################################
88
89
#
# Variables that control how the compiler itself is built
sof's avatar
sof committed
90
#
91
################################################################################
92

93
94
# The compiler used to build GHC is $(GHC).  To change the actual compiler
# used, re-configure with --with-ghc=<path-to-ghc>.
sof's avatar
sof committed
95

96
97
98
99
100
# Extra ways in which to build the compiler (for example, you might want to
# build a profiled compiler so you can see where it spends its time)
GhcCompilerWays=

# Extra option flags to pass to the compiler that compiles the compiler
101
# (Ones that are essential are wired into compiler/Makefile)
102
# Typical options to use here:
sof's avatar
sof committed
103
#
104
105
106
#	-DDEBUG		include debugging code and assertions (will make the
#			compiler slower and produce debugging output, but useful
#			for development)
sof's avatar
sof committed
107
108
#
#	-dcore-lint	check the types after every pass of the compiler;
109
110
111
112
#			a pretty strong internal check of the compiler being
#			used to compile GHC.  Useful when bootstrapping.
GhcHcOpts=-Rghc-timing

113
114
115
116
# Extra options added to specific stages of the compiler bootstrap.
# These are placed later on the command line, and may therefore
# override options from $(GhcHcOpts).
GhcStage1HcOpts=
117
118
GhcStage2HcOpts=-O2
GhcStage3HcOpts=-O2
119

120
GhcProfiled=NO
121
GhcDebugged=NO
122
GhcLibProfiled=$(if $(filter p,$(GhcLibWays)),YES,NO)
123

124
125
126
127
128
# Build shared and/or static libs?
BuildSharedLibs=@BuildSharedLibs@
# ToDo later:
# BuildStaticLibs=@BuildStaticLibs@

129
130
131
132
133
134
135
136
137
138
# Build a compiler that will build *unregisterised* libraries and
# binaries by default.  Unregisterised code is supposed to compile and
# run without any support for architecture-specific assembly mangling,
# register assignment or tail-calls, and is therefore a good way to get
# started when porting GHC to new architectures.
#
# If this is set to NO, you can still use the unregisterised way
# (way 'u') to get unregisterised code, but the default way will be
# registerised.
#
139
140
141
# NOTE: the stage1 compiler will be a registerised binary (assuming
# the compiler you build with is generating registerised binaries), but
# the stage2 compiler will be an unregisterised binary.
142
#
143
144
145
ifneq "$(findstring $(HostArch_CPP), alpha hppa)" ""
GhcUnregisterised=YES
else
146
GhcUnregisterised=NO
147
endif
148

149
150
151
152
# Build a compiler with a native code generator backend
# (as well as a C backend)
#
# Target platforms supported:
153
#   i386, powerpc
154
#   AIX is not supported 
155
ArchSupportsNCG=$(strip $(patsubst $(HostArch_CPP), YES, $(findstring $(HostArch_CPP), i386 x86_64 powerpc sparc)))
156
157
OsSupportsNCG=$(strip $(patsubst $(HostOS_CPP), YES, $(patsubst aix,,$(HostOS_CPP))))

158
159
160
161
# lazy test, because $(GhcUnregisterised) might be set in build.mk later.
GhcWithNativeCodeGen=$(strip\
    $(if $(filter YESYESNO,\
		  $(OsSupportsNCG)$(ArchSupportsNCG)$(GhcUnregisterised)),YES,NO))
162

163
164
HaveLibDL = @HaveLibDL@

165
166
167
# ArchSupportsSMP should be set iff there is support for that arch in
# includes/SMP.h
ArchSupportsSMP=$(strip $(patsubst $(HostArch_CPP), YES, $(findstring $(HostArch_CPP), i386 x86_64 sparc powerpc)))
168

169
170
# lazy test, because $(GhcUnregisterised) might be set in build.mk later.
GhcWithSMP=$(strip $(if $(filter YESNO, $(ArchSupportsSMP)$(GhcUnregisterised)),YES,NO))
171

172
173
# Whether to include GHCi in the compiler.  Depends on whether the RTS linker
# has support for this OS/ARCH combination.
174

175
OsSupportsGHCi=$(strip $(patsubst $(HostOS_CPP), YES, $(findstring $(HostOS_CPP), mingw32 cygwin32 linux solaris2 freebsd netbsd openbsd darwin)))
176
ArchSupportsGHCi=$(strip $(patsubst $(HostArch_CPP), YES, $(findstring $(HostArch_CPP), i386 x86_64 powerpc sparc sparc64)))
177
178

ifeq "$(OsSupportsGHCi)$(ArchSupportsGHCi)" "YESYES"
179
180
GhcWithInterpreter=YES
else 
181
GhcWithInterpreter=NO
182
endif
183

184
185
186
187
188
# GhcEnableTablesNextToCode tells us whether the target architecture
# supports placing info tables directly before the entry code
# (see TABLES_NEXT_TO_CODE in the RTS).  Whether we actually compile for
# TABLES_NEXT_TO_CODE depends on whether we're building unregisterised
# code or not, which may be decided by options to the compiler later.
189
ifneq "$(findstring $(TargetArch_CPP)X, ia64X powerpc64X)" ""
190
GhcEnableTablesNextToCode=NO
191
else
192
GhcEnableTablesNextToCode=YES
193
194
endif

Ian Lynagh's avatar
Ian Lynagh committed
195
196
197
198
199
200
201
202
# On Windows we normally want to make a relocatable bindist, to we
# ignore flags like libdir
ifeq "$(Windows)" "YES"
RelocatableBuild = YES
else
RelocatableBuild = NO
endif

203
204
205
206
# When building bindists we set this to yes so that the binaries are as
# portable as possible.
BeConservative = NO

sof's avatar
sof committed
207
208
209
210
211
#
# Building various ways?
# (right now, empty if not).
BuildingParallel=$(subst mp,YES,$(filter mp,$(WAYS)))
BuildingGranSim=$(subst mg,YES,$(filter mg,$(WAYS)))
212

213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
# Interface file version (hi-boot files only)
#
# A GHC built with HscIfaceFileVersion=n will look for 
#	M.hi-boot-n, and only then for 
#	M.hi-boot.
# (It'll be happy with the latter if the former doesn't exist.)
#
#
# This variable is used ONLY for hi-boot files.  Its only purpose is
# to allow you to have a single directory with multiple .hi-boot files
# for the same module, each corresponding to a different version of
# GHC.
#
# HscIfaceFileVersion is propagated to hsc via
# compiler/main/Config.hs, which is automatically generated by
# compiler/Makefile.

HscIfaceFileVersion=6

232
#------------------------------------------------------------------------------
233
# Options for Libraries
234

235
236
237
# Which directory (in libraries/) contains the integer library?
INTEGER_LIBRARY=integer-gmp

Ian Lynagh's avatar
Ian Lynagh committed
238
239
240
# We build the libraries at least the "vanilla" way (way "v")
GhcLibWays = v

241
# In addition to the normal sequential way, the default is to also build
Ian Lynagh's avatar
Ian Lynagh committed
242
243
244
# profiled prelude libraries unless we are booting from .hc files
ifneq "$(BootingFromHc)" "YES"
GhcLibWays += p
sof's avatar
sof committed
245
endif
246

247
248
249
250
ifeq "$(BuildSharedLibs)" "YES"
GhcLibWays += dyn
endif

251
252
253
254
255
256
257
# In addition, the RTS is built in some further variations.  Ways that
# make sense here:
# 
#   thr         : threaded
#   thr_p       : threaded profiled
#   debug       : debugging (compile with -g for the C compiler, and -DDEBUG)
#   debug_p     : debugging profiled
258
259
#   thr_debug   : debugging threaded
#   thr_debug_p : debugging threaded profiled
260
261
#   t		: ticky-ticky profiling
#   debug_t	: debugging ticky-ticky profiling
Simon Marlow's avatar
Simon Marlow committed
262
263
264
#   l           : event logging
#   thr_l       : threaded and event logging
#   thr_debug_l	: threaded and debugging and event logging
265
#
Simon Marlow's avatar
Simon Marlow committed
266
GhcRTSWays=l
267
268
269
270
271
272

# Usually want the debug version
ifeq "$(BootingFromHc)" "NO"
GhcRTSWays += debug 
endif

273
ifeq "$(BuildSharedLibs)" "YES"
274
GhcRTSWays += dyn debug_dyn thr_dyn thr_debug_dyn
275
276
endif

277
# Want the threaded versions unless we're unregisterised
Simon Marlow's avatar
Simon Marlow committed
278
279
# Defer the check until later by using $(if..), because GhcUnregisterised might
# be set in build.mk, which hasn't been read yet.
Simon Marlow's avatar
Simon Marlow committed
280
GhcRTSWays += $(if $(findstring NO, $(GhcUnregisterised)),thr thr_debug thr_l,)
Simon Marlow's avatar
Simon Marlow committed
281
GhcRTSWays += $(if $(findstring p, $(GhcLibWays)),$(if $(findstring NO, $(GhcUnregisterised)),thr_p,),)
282

283
# We can only build GHCi threaded if we have a threaded RTS:
284
GhcThreaded = $(if $(findstring thr,$(GhcRTSWays)),YES,NO)
285

286
287
288
289
# Option flags to pass to GHC when it's compiling modules in
# fptools/libraries.  Typically these are things like -O or
# -dcore-lint or -H32m.  The ones that are *essential* are wired into
# the build system.
sof's avatar
sof committed
290
#
291
# 	-O(2) is pretty desirable, otherwise no inlining of prelude
sof's avatar
sof committed
292
#		things (incl "+") happens when compiling with this compiler
293
#
294
#	-XGenerics switches on generation of support code for 
295
296
297
#		derivable type classes.  This is now off by default,
#		but we switch it on for the libraries so that we generate
#		the code in case someone importing wants it
sof's avatar
sof committed
298

Ian Lynagh's avatar
Ian Lynagh committed
299
GhcLibHcOpts=-O2 -XGenerics
rrt's avatar
rrt committed
300

301
# Win32 only: Enable the RTS and libraries to be built as DLLs
302
DLLized=@EnableWin32DLLs@
303

304
305
306
307
308
# Strip local symbols from libraries?  This can make the libraries smaller,
# but makes debugging somewhat more difficult.  Doesn't work with all ld's.
#
StripLibraries=NO

309
310
# These are the URL patterns that Haddock uses to generate the "Source
# File" links on each page.
311
PackageSourceURL = http://darcs.haskell.org/packages/$(PACKAGE)/%{FILE}
312
313
314
315
316
317
318
319
320
321

# ----------------------------------------------------------------------------
# Object-file splitting
#
# 	Set SplitObjs=YES or NO in your build.mk
#
#	Don't use -split-objs in in GhcLibHcOpts, because the build
#		system needs to do other special magic if you are
#		doing object-file splitting

322
323
ArchSupportsSplitObjs=$(strip $(if $(filter $(TargetArch_CPP),i386 x86_64 powerpc sparc),YES,NO))

324
# lazy test, so that $(GhcUnregisterised) can be set in build.mk
325
326
327
328
329
330
331
332
333
334
SupportsSplitObjs=$(strip $(if $(filter YES,$(ArchSupportsSplitObjs)),\
	            $(if $(filter NO,$(BootingFromHc)),\
		      $(if $(filter NO,$(GhcUnregisterised)),\
	                YES,\
			NO),\
                      NO),\
                    NO))

# By default, enable SplitObjs for the libraries if this build supports it
SplitObjs=$(SupportsSplitObjs)
335

sebc's avatar
sebc committed
336
337
338
# Math library
LIBM=@LIBM@

sof's avatar
sof committed
339
340
# .NET interop support?
#
Simon Marlow's avatar
Simon Marlow committed
341
DotnetSupport=NO
sof's avatar
sof committed
342

343
344
345
346
# Build unix package?
#
GhcLibsWithUnix=@GhcLibsWithUnix@

347
348
# ----------------------------------------------------------------------------
# Options for GHC's RTS
349

350
351
352
353
# For an optimised RTS (you probably don't want to change these; we build
# a debugging RTS by default now.  Use -debug to get it).
GhcRtsHcOpts=-optc-O2
GhcRtsCcOpts=-fomit-frame-pointer
354

355
356
# Include the front panel code?  Needs GTK+.
GhcRtsWithFrontPanel = NO
357

358
359
360
# Include support for CPU performance counters via the PAPI library in the RTS?
# (PAPI: http://icl.cs.utk.edu/papi/)
GhcRtsWithPapi = NO
361
362
PapiLibDir=
PapiIncludeDir=
363

364
################################################################################
365
366
367
#
#		Paths (see paths.mk)
#
368
################################################################################
369

370
# Directory used by GHC (and possibly other tools) for storing
rrt's avatar
rrt committed
371
# temporary files.  If your TMPDIR isn't big enough, either override
372
373
374
# this in build.mk or set your environment variable "TMPDIR" to point
# to somewhere with more space.  (TMPDIR=. is a good choice).

375
# DEFAULT_TMPDIR isn't called TMPDIR because GNU make tends to
376
377
378
# override an environment variable with the value of the make variable
# of the same name (if it exists) when executing sub-processes, so
# setting the TMPDIR env var would have no effect in the build tree.
379
380

DEFAULT_TMPDIR		= /tmp
rrt's avatar
rrt committed
381
ifeq "$(TARGETPLATFORM)" "i386-unknown-cygwin32"
382
DEFAULT_TMPDIR		= /C/TEMP
rrt's avatar
rrt committed
383
384
endif
ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
385
DEFAULT_TMPDIR		= /C/TEMP
rrt's avatar
rrt committed
386
endif
387

Ian Lynagh's avatar
Ian Lynagh committed
388
BIN_DIST_TOPDIR_ABS=$(TOP)
389
BIN_DIST_DIR=$(BIN_DIST_TOPDIR_ABS)/$(BIN_DIST_NAME)
390
391

BIN_DIST_NAME=ghc-$(ProjectVersion)
Ian Lynagh's avatar
Ian Lynagh committed
392
BIN_DIST_TAR=$(TOP)/$(BIN_DIST_NAME)-$(TARGETPLATFORM).tar
393
BIN_DIST_TAR_BZ2=$(BIN_DIST_TAR).bz2
Ian Lynagh's avatar
Ian Lynagh committed
394
BIN_DIST_PREP_DIR=$(TOP)/bindist-prep
395
BIN_DIST_PREP=$(BIN_DIST_PREP_DIR)/$(BIN_DIST_NAME)
Ian Lynagh's avatar
Ian Lynagh committed
396
BIN_DIST_LIST=$(TOP)/bindist-list
397

398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
# Definition of installation directories, we don't use half of these, but since
# the configure script has them on offer while passing through, we might as well
# set them. Note that we have to be careful, because the GNU coding standards
# have changed a bit over the course of time, and autoconf development reflects
# this.
#
# A little bit of history regarding autoconf and GNU coding standards, use this
# as a cheat-sheet for the stuff below:
#
# variable    | default < 2.60     | default >= 2.60
# ------------+--------------------+--------------------------------------
# exec_prefix | ${prefix}          | ${prefix}
# libdir      | ${exec_prefix}/lib | ${exec_prefix}/lib
# datarootdir | NONE!              | ${prefix}/share
# datadir     | ${prefix}/share    | ${datarootdir}
# infodir     | ${prefix}/info     | ${datarootdir}/info
# mandir      | ${prefix}/man      | ${datarootdir}/man
# docdir      | NONE!              | ${datarootdir}/doc/${PACKAGE_TARNAME}
# htmldir     | NONE!              | ${docdir}
# dvidir      | NONE!              | ${docdir}
# pdfdir      | NONE!              | ${docdir}
# psdir       | NONE!              | ${docdir}
#
# NOTE: The default e.g. ${docdir} above means that autoconf substitutes the
# string "${docdir}", not the value of docdir! This is crucial for the GNU
# coding standards.
424

425
426
427
# This gets used in the default docdir when autoconf >= 2.60 is used
PACKAGE_TARNAME := @PACKAGE_TARNAME@

428
prefix          := @prefix@
429
430
431
432

# New autoconf (>= 2.60?) make a configure with a --datarootdir=DIR flag.
# However, in order to support older autoconf's we don't use it.
# datarootdir is set lower down instead.
433
434
435
# But, as datadir is defined in terms of datarootdir, we also need to
# set it to the value (if any) that configure gives it here.
datarootdir     := @datarootdir@
436

437
438
439
440
441
442
exec_prefix     := @exec_prefix@
bindir          := @bindir@
datadir0        := @datadir@
libdir0         := @libdir@
includedir      := @includedir@
mandir          := @mandir@
Clemens Fruhwirth's avatar
Clemens Fruhwirth committed
443
dynlibdir       := @libdir@
444

445
ifeq "$(RelocatableBuild)" "YES"
446
447
448

# Hack: our directory layouts tend to be different on Windows, so
# hack around configure's bogus assumptions here.
449
datarootdir := $(prefix)
Ian Lynagh's avatar
Ian Lynagh committed
450
451
datadir     := $(prefix)/lib
libdir      := $(prefix)/lib
452

453
454
455
456
457
458
docdir    := $(prefix)/doc
htmldir   := $(docdir)
dvidir    := $(docdir)
pdfdir    := $(docdir)
psdir     := $(docdir)

459
460
else

461
# Unix: override libdir and datadir to put ghc-specific stuff in
462
# a subdirectory with the version number included.
463
464
465
466
467
#
# datadir is set to libdir here as GHC needs package.conf and unlit
# to be in the same place (and things like ghc-pkg need to agree on
# where package.conf is, so we just set it globally).
#
468
469
datarootdir := $(datadir0)
libdir      := $(libdir0)/ghc-$(ProjectVersion)
470
datadir     := $(libdir)
471

472
473
474
# New autoconf (>= 2.60?) make a configure with --docdir=DIR etc flags.
# However, in order to support older autoconf's we don't use them.

475
476
477
478
479
480
481
482
483
484
485
#docdir    := @docdir@
#htmldir   := @htmldir@
#dvidir    := @dvidir@
#pdfdir    := @pdfdir@
#psdir     := @psdir@

docdir    := $(datarootdir)/doc/ghc
htmldir   := $(docdir)
dvidir    := $(docdir)
pdfdir    := $(docdir)
psdir     := $(docdir)
486

487
488
489
490
endif # Windows

headerdir := $(libdir)/include

491
492
# Default place for putting interface files is $(libdir)
# (overriden for packages in package.mk)
493
ifacedir		= $(libdir)
494

sof's avatar
sof committed
495
496
497
498
499
500
# NOTE: by intention, libexecdir and libdir point to 
# the same place.
#  => Only way to override this is to set libexecdir= on the command line.
#     (NOTE: configure script setting is ignored).
libexecdir		= $(libdir)

501
502
#-----------------------------------------------------------------------------
# install configuration
503

504
#
505
# Set this to have files installed with a specific owner
506
#
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
INSTALL_OWNER =

# 
# Set this to have files installed with a specific group
#
INSTALL_GROUP =

#
# Invocations of `install' for the four different classes
# of targets:
#
INSTALL_PROGRAM = $(INSTALL) -m 755
INSTALL_SCRIPT  = $(INSTALL) -m 755
INSTALL_SHLIB   = $(INSTALL) -m 755
INSTALL_DATA    = $(INSTALL) -m 644
522
INSTALL_HEADER  = $(INSTALL) -m 644
Ian Lynagh's avatar
Ian Lynagh committed
523
INSTALL_MAN     = $(INSTALL) -m 644
524
525
INSTALL_DIR     = $(MKDIRHIER)

526
527
528
529
530
531
532
533
534
535
536
537
538
#
# runhaskell and hsc2hs are special, in that other compilers besides
# GHC might provide them.  Systems with a package manager often come
# with tools to manage this kind of clash, e.g. RPM's
# update-alternatives.  When building a distribution for such a system,
# we recommend setting both of the following to 'YES'.
#
# NO_INSTALL_RUNHASKELL = YES
# NO_INSTALL_HSC2HS     = YES
#
# NB. we use negative tests here because for binary-distributions we cannot
# test build-time variables at install-time, so they must default to on.

539
540
# -----------------------------------------------------------------------------
# Utilities programs: flags 
541
542
543
544
545
546
547
548
549
550
551

# If you want to give any standard flags to pretty much any utility
# (see utils.mk for a complete list), by adding a line here
#
# 	SRC_P_OPTS += ...
#
# where P is the utility. For example, to add -O to all Haskell
# compilations, 
#
#	SRC_HC_OPTS += -O

552
SRC_HC_OPTS += -H32m -O
553

rrt's avatar
rrt committed
554
555
556
557
# These flags make flex 8-bit
SRC_FLEX_OPTS	+= -8

# Default fptools options for dllwrap.
558
SRC_BLD_DLL_OPTS += --target=i386-mingw32
rrt's avatar
rrt committed
559
560
561
562

# Flags for CPP when running GreenCard on .pgc files
GC_CPP_OPTS += -P -E -x c -traditional -D__GLASGOW_HASKELL__

563

564
################################################################################
565
#
566
#	Layout of the source tree
567
#
568
################################################################################
569

570
# Here we provide defines for the various directories in the source tree,
Ian Lynagh's avatar
Ian Lynagh committed
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
# so we can move things around more easily.  A define $(GHC_FOO_DIR)
# indicates a directory relative to the top of the source tree.

GHC_UTILS_DIR           = utils
GHC_INCLUDE_DIR         = includes
GHC_COMPILER_DIR        = compiler
GHC_PROG_DIR            = ghc
GHC_RTS_DIR             = rts
GHC_DRIVER_DIR          = driver
GHC_COMPAT_DIR          = compat

GHC_MKDEPENDC_DIR       = $(GHC_UTILS_DIR)/mkdependC
GHC_LTX_DIR             = $(GHC_UTILS_DIR)/ltx
GHC_LNDIR_DIR           = $(GHC_UTILS_DIR)/lndir
GHC_MKDIRHIER_DIR       = $(GHC_UTILS_DIR)/mkdirhier
GHC_DOCBOOK_DIR         = $(GHC_UTILS_DIR)/docbook
GHC_UNLIT_DIR           = $(GHC_UTILS_DIR)/unlit
GHC_HP2PS_DIR           = $(GHC_UTILS_DIR)/hp2ps
GHC_HSTAGS_DIR          = $(GHC_UTILS_DIR)/hasktags
GHC_GHCTAGS_DIR         = $(GHC_UTILS_DIR)/ghctags
GHC_HSC2HS_DIR          = $(GHC_UTILS_DIR)/hsc2hs
GHC_TOUCHY_DIR          = $(GHC_UTILS_DIR)/touchy
GHC_PKG_DIR             = $(GHC_UTILS_DIR)/ghc-pkg
GHC_GENPRIMOP_DIR       = $(GHC_UTILS_DIR)/genprimopcode
GHC_GENAPPLY_DIR        = $(GHC_UTILS_DIR)/genapply
GHC_CABAL_DIR           = $(GHC_UTILS_DIR)/ghc-cabal
GHC_MANGLER_DIR         = $(GHC_DRIVER_DIR)/mangler
GHC_SPLIT_DIR           = $(GHC_DRIVER_DIR)/split
GHC_SYSMAN_DIR          = $(GHC_RTS_DIR)/parallel
600

601
602
603
# -----------------------------------------------------------------------------
# Names of programs in the GHC tree
#
Ian Lynagh's avatar
Ian Lynagh committed
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
#      xxx_PGM          the name of an executable, without the path
#      xxx              the executable relative to the current dir

GHC_UNLIT_PGM           = unlit$(exeext)
GHC_HP2PS_PGM           = hp2ps$(exeext)
GHC_HSTAGS_PGM          = hasktags$(exeext)
GHC_GHCTAGS_PGM         = ghctags$(exeext)
GHC_HSC2HS_PGM          = hsc2hs$(exeext)
GHC_TOUCHY_PGM          = touchy$(exeext)
GHC_MANGLER_PGM         = ghc-asm
GHC_SPLIT_PGM           = ghc-split
GHC_SYSMAN_PGM          = SysMan
GHC_GENPRIMOP_PGM       = genprimopcode$(exeext)
GHC_GENAPPLY_PGM        = genapply$(exeext)
GHC_CABAL_PGM           = ghc-cabal$(exeext)
GHC_PKG_PGM             = ghc-pkg$(exeext)
GHC_MKDEPENDC_PGM       = mkdependC
GHC_LTX_PGM             = ltx$(exeext)
GHC_MKDIRHIER_PGM       = mkdirhier
GHC_LNDIR_PGM           = lndir
GHC_DUMMY_GHC_PGM       = dummy-ghc$(exeext)
625

626
627
628
629
630
631
632
ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
GHC_CP			= "xcopy /y"
GHC_PERL		= perl
else
GHC_CP			= $(CP)
GHC_PERL		= $(PERL)
endif
633

ravi@bluespec.com's avatar
ravi@bluespec.com committed
634
HP2PS			= $(GHC_HP2PS_DIR)/$(GHC_HP2PS_PGM)
635
HSTAGS			= $(GHC_HSTAGS_DIR)/$(GHC_HSTAGS_PGM)
Ian Lynagh's avatar
Ian Lynagh committed
636
637
MANGLER			= $(INPLACE_LIB)/$(GHC_MANGLER_PGM)
SPLIT			= $(INPLACE_LIB)/$(GHC_SPLIT_PGM)
638
639
640
SYSMAN 			= $(GHC_SYSMAN_DIR)/$(GHC_SYSMAN_PGM)
LTX 			= $(GHC_LTX_DIR)/$(GHC_LTX_PGM)
LNDIR			= $(GHC_LNDIR_DIR)/$(GHC_LNDIR_PGM)
641

Ian Lynagh's avatar
Ian Lynagh committed
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
INPLACE			= inplace
INPLACE_BIN		= $(INPLACE)/bin
INPLACE_LIB		= $(INPLACE)/lib
INPLACE_MINGW		= $(INPLACE)/mingw

UNLIT			= $(INPLACE_LIB)/$(GHC_UNLIT_PGM)
TOUCHY                  = $(INPLACE_LIB)/$(GHC_TOUCHY_PGM)
MKDIRHIER		= $(INPLACE_BIN)/$(GHC_MKDIRHIER_PGM)
MKDEPENDC 		= $(INPLACE_BIN)/$(GHC_MKDEPENDC_PGM)
GHC_CABAL_INPLACE	= $(INPLACE_BIN)/$(GHC_CABAL_PGM)
GENAPPLY_INPLACE	= $(INPLACE_BIN)/$(GHC_GENAPPLY_PGM)
GHC_PKG_INPLACE		= $(INPLACE_BIN)/$(GHC_PKG_PGM)
GHCTAGS_INPLACE		= $(INPLACE_BIN)/$(GHC_GHCTAGS_PGM)
HSC2HS_INPLACE		= $(INPLACE_BIN)/$(GHC_HSC2HS_PGM)
GENPRIMOP_INPLACE	= $(INPLACE_BIN)/$(GHC_GENPRIMOP_PGM)
DUMMY_GHC_INPLACE	= $(INPLACE_BIN)/$(GHC_DUMMY_GHC_PGM)

659
GENERATED_FILE  = chmod a-w
Ian Lynagh's avatar
Ian Lynagh committed
660
EXECUTABLE_FILE = chmod +x
661

662
#-----------------------------------------------------------------------------
663
664
665
666
667
668
669
# Haskell compilers and mkdependHS

# $(GHC), $(HBC) and $(NHC) point to installed versions of the relevant
# compilers, if available.
#
# $(HC) is a generic Haskell 98 compiler, set to $(GHC) by default.
# $(MKDEPENDHS) is the Haskell dependency generator (ghc -M).
670
671
672
#
# NOTE: Don't override $(GHC) in build.mk, use configure --with-ghc instead
# (because the version numbers have to be calculated).
673

Ian Lynagh's avatar
Ian Lynagh committed
674
675
676
677
678
679
680
681
GHC := @WithGhc@
# If we have a make dependency on c:/ghc/ghc, and the file is actually
# called c:/ghc/ghc.exe, then make will think that ghc doesn't exist
# and that it doesn't know how to create it.
ifneq "$(wildcard $(GHC).exe)" ""
GHC := $(GHC).exe
endif

682
GhcDir          = $(dir $(GHC))
683

Ian Lynagh's avatar
Ian Lynagh committed
684
685
# Set to YES if $(GHC) has the editline package installed
GhcHasEditline	= @GhcHasEditline@
686

687
688
HBC		= @HBC@
NHC		= @NHC@
689

690
# Sometimes we want to invoke ghc from the build tree in different
691
# places (eg. it's handy to have a nofib & a ghc build in the same
rrt's avatar
rrt committed
692
# tree).  We can refer to "this ghc" as $(GHC_INPLACE):
693

694
GHC_INPLACE = $(GHC_STAGE1)
695

Ian Lynagh's avatar
Ian Lynagh committed
696
697
698
699
GHC_STAGE0_ABS = $(GHC)
GHC_STAGE1_ABS = $(TOP)/$(INPLACE_BIN)/ghc-stage1$(exeext)
GHC_STAGE2_ABS = $(TOP)/$(INPLACE_BIN)/ghc-stage2$(exeext)
GHC_STAGE3_ABS = $(TOP)/$(INPLACE_BIN)/ghc-stage3$(exeext)
Ian Lynagh's avatar
Ian Lynagh committed
700

Ian Lynagh's avatar
Ian Lynagh committed
701
702
703
704
GHC_STAGE0  = $(GHC)
GHC_STAGE1  = $(INPLACE_BIN)/ghc-stage1$(exeext)
GHC_STAGE2  = $(INPLACE_BIN)/ghc-stage2$(exeext)
GHC_STAGE3  = $(INPLACE_BIN)/ghc-stage3$(exeext)
705

Ian Lynagh's avatar
Ian Lynagh committed
706
707
# Install stage 2 by default, can be changed to 3
INSTALL_GHC_STAGE=2
708

Ian Lynagh's avatar
Ian Lynagh committed
709
BOOTSTRAPPING_CONF = libraries/bootstrapping.conf
710

Ian Lynagh's avatar
Ian Lynagh committed
711
INPLACE_PACKAGE_CONF = $(INPLACE_LIB)/package.conf
712
713
714
715
716
717

GhcVersion	= @GhcVersion@
GhcPatchLevel	= @GhcPatchLevel@
GhcMajVersion	= @GhcMajVersion@
GhcMinVersion	= @GhcMinVersion@

Ian Lynagh's avatar
Ian Lynagh committed
718
719
ghc_ge_607 = @ghc_ge_607@
ghc_ge_609 = @ghc_ge_609@
720
721
722
723
724
725
726
727

# Canonicalised ghc version number, used for easy (integer) version
# comparisons.  We must expand $(GhcMinVersion) to two digits by
# adding a leading zero if necessary:
ifneq "$(findstring $(GhcMinVersion), 0 1 2 3 4 5 6 7 8 9)" ""
GhcCanonVersion = $(GhcMajVersion)0$(GhcMinVersion)
else
GhcCanonVersion = $(GhcMajVersion)$(GhcMinVersion)
728
endif
729

730
731
732
#-----------------------------------------------------------------------------
# C compiler
#
733
734
735
736
# NB. Don't override $(WhatGccIsCalled) using build.mk,  re-configure using
# the flag --with-gcc=<blah> instead.  The reason is that the configure script
# needs to know which gcc you're using in order to perform its tests.

737
738
HaveGcc 	= @HaveGcc@
UseGcc  	= YES
sof's avatar
sof committed
739
WhatGccIsCalled = @WhatGccIsCalled@
740
GccVersion      = @GccVersion@
741
742
743
744
745
746
747
748
ifeq "$(strip $(HaveGcc))" "YES"
ifneq "$(strip $(UseGcc))"  "YES"
  CC	= cc
else
  CC	= $(WhatGccIsCalled)
endif
endif

749
# default C compiler flags
sof's avatar
sof committed
750
SRC_CC_OPTS = @SRC_CC_OPTS@
751

752
753
754
755
ifeq "$(TARGETPLATFORM)" "ia64-unknown-linux"
SRC_CC_OPTS += -G0
endif

Ian Lynagh's avatar
Ian Lynagh committed
756
SRC_HSC2HS_OPTS += $(addprefix --cflag=,$(filter-out -O,$(SRC_CC_OPTS)))
757
SRC_HSC2HS_OPTS += $(foreach d,$(GMP_INCLUDE_DIRS),-I$(d))
Ian Lynagh's avatar
Ian Lynagh committed
758

759
#-----------------------------------------------------------------------------
760
# GMP Library (version 2.0.x or above)
761
762
#
HaveLibGmp	= @HaveLibGmp@
763
LibGmp		= @LibGmp@
764

765
766
767
GMP_INCLUDE_DIRS=@GMP_INCLUDE_DIRS@
GMP_LIB_DIRS=@GMP_LIB_DIRS@

768
#-----------------------------------------------------------------------------
769
# GMP framework (Mac OS X)
770
#
771
HaveFrameworkGMP = @HaveFrameworkGMP@
772

773
#-----------------------------------------------------------------------------
774
# Mingwex Library
775
#
776
HaveLibMingwEx	= @HaveLibMingwEx@
777

778
#-----------------------------------------------------------------------------
779
# Flex (currently unused, could be moved to glafp-utils)
780

781
# FLEX			= @LEX@
sof's avatar
sof committed
782
# Don't bother with -lfl, we define our own yywrap()s anyway.
783
# FLEX_LIB		= 
sof's avatar
sof committed
784
#WAS:FLEX_LIB		= @LEXLIB@
785
786
787
788
789

#-----------------------------------------------------------------------------
# Other standard (ha!) Unix utilities

AR			= @ArCmd@
ken's avatar
ken committed
790
ArSupportsInput		= @ArSupportsInput@
791
792
793
794
795
# Yuckage: for ghc/utils/parallel -- todo: nuke this dependency!!
BASH                    = /usr/local/bin/bash

CONTEXT_DIFF		= @ContextDiffCmd@
CP			= cp
sof's avatar
sof committed
796
CPP			= @CPP@ @CPPFLAGS@
797
CTAGS 			= $(ETAGS)
798
799
800
801
802
#
# RAWCPP_FLAGS are the flags to give to cpp (viz, gcc -E) to persuade it to
# behave plausibly on Haskell sources.
#
RAWCPP_FLAGS            = -undef -traditional
rrt's avatar
rrt committed
803
FIND			= @FindCmd@
sof's avatar
sof committed
804
SORT		        = @SortCmd@
805
INSTALL			= @INSTALL@
sof's avatar
sof committed
806
807
808
809
810
#
# Sigh - the autoconf macro for INSTALL will subst a relative path to the fallback
# install-sh script (if chosen). This not terribly useful to us, so we convert
# it into an abs. path.
# 
Ian Lynagh's avatar
Ian Lynagh committed
811
INSTALL			:= $(subst .././install-sh,$(TOP)/install-sh,$(INSTALL))
812
LATEX			= latex
rrt's avatar
rrt committed
813
814
HEVEA			= hevea
HACHA			= hacha
815
816
817
818
819
820
LN_S			= @LN_S@
MANMACROS		= -man
MSMACROS 		= -ms
MV			= mv
NROFF			= nroff
PERL 			= @PerlCmd@
821
PYTHON			= @PythonCmd@
822
823
824
825
826
827
PIC			= pic
PREPROCESSCMD		= $(CC) -E
RANLIB			= @RANLIB@
RM			= rm -f
SED			= @SedCmd@
SHELL			= /bin/sh
828

829
830
LD			= @LdCmd@

831
832
833
834
835
# Some ld's support the -x flag and some don't, so the configure
# script detects which we have and sets LdXFlag to "-x" or ""
# respectively.
LD_X			= @LdXFlag@

836
837
838
839
# GNU ld supports input via a linker script, which is useful to avoid
# overflowing command-line length limits.
LdIsGNULd		= @LdIsGNULd@

sof's avatar
sof committed
840
841
842
843
844
845
846
847
#
# In emergency situations, REAL_SHELL is used to perform shell commands
# from within the ghc driver script, by scribbling the command line to
# a temp file and then having $(REAL_SHELL) execute it. 
#
# The reason for having to do this is that overly long command lines
# cause unnecessary trouble with some shells (e.g., /bin/sh on Solaris
# 2.5.1), which is why this backdoor is provided. The situation of overly
848
# long command lines is either encountered while doing `make boot' in compiler/, 
sof's avatar
sof committed
849
850
851
852
853
# or when linking the compiler binary (`hsc'). 
#
# We do not use SHELL to execute long commands, as `make' will more than likely
# override whatever setting you have in your environment while executing. 

rrt's avatar
rrt committed
854
# By default, REAL_SHELL is set equal to SHELL, which is not really a smart move
855
# as it is SHELL that will show up the bogosity in the first place, but setting
sof's avatar
sof committed
856
857
858
859
860
861
862
# it to anything else isn't really portable.
#
#  ====> If long command lines cause you trouble, invoke `ghc' (via `make' or otherwise)
# with REAL_SHELL set to something else than /bin/sh, for instance, your favourite
# command shell.
#
REAL_SHELL=$(SHELL)
863
864
SIZE			= size
STRIP			= strip
Ian Lynagh's avatar
Ian Lynagh committed
865
PATCH			= @PatchCmd@
866
TAR			= @TarCmd@
sof's avatar
sof committed
867
ZIP			= zip
sof's avatar
sof committed
868

869
870
HSCOLOUR = @HSCOLOUR@

871
872
873
874
875
876
877
878
879
880
881
882
883
884
#
# This is special to literate/, ToDo: add literate-specific
# configure setup to literate/.
#
TBL 			= tbl
TEX			= tex
TGRIND 			= tgrind
TGRIND_HELPER 		= /usr/local/lib/tgrind/tfontedpr # XXX
TIB			= tib

TIME			= @TimeCmd@
TROFF			= troff
UNAME			= uname

885
886
887
# GTK+
GTK_CONFIG = @GTK_CONFIG@

888
889
890
891
# Set this if you want to use Inno Setup to build a Windows installer
# when you make a bindist
ISCC                    =

892
893
894
#-----------------------------------------------------------------------------
# DocBook XML stuff

895
896
897
898
BUILD_DOCBOOK_HTML = @BUILD_DOCBOOK_HTML@
BUILD_DOCBOOK_PS = @BUILD_DOCBOOK_PS@
BUILD_DOCBOOK_PDF = @BUILD_DOCBOOK_PDF@
DBLATEX		= @DblatexCmd@
899
900
901
902
903
904
905
906
907
XSLTPROC		= @XsltprocCmd@
XMLLINT			= @XmllintCmd@
FOP			= @FopCmd@
XMLTEX			= @XmltexCmd@
PDFXMLTEX		= @PdfxmltexCmd@
DVIPS			= @DvipsCmd@

DIR_DOCBOOK_XSL		= @DIR_DOCBOOK_XSL@

908
909
910
911
XSLTPROC_LABEL_OPTS	= --stringparam toc.section.depth 3 \
			  --stringparam section.autolabel 1 \
			  --stringparam section.label.includes.component.label 1

912
913
914
#-----------------------------------------------------------------------------
# 		FPtools support software

sof's avatar
sof committed
915
916
BLD_DLL			= dllwrap

reid's avatar
reid committed
917
918
919
920
921
922
#
# ghc-pkg
#
GHC_PKG		        = @GhcPkgCmd@

#
923
# GreenCard
reid's avatar
reid committed
924
#
925
926
GREENCARD	        = @GreenCardCmd@
GREENCARD_VERSION	= @GreenCardVersion@		
reid's avatar
reid committed
927

928
929
930
931
932
933
934
935
#
# Happy
#
HAPPY			= @HappyCmd@
HAPPY_VERSION		= @HappyVersion@		
#
# Options to pass to Happy when we're going to compile the output with GHC
#
Ian Lynagh's avatar
Ian Lynagh committed
936
SRC_HAPPY_OPTS		= -agc --strict
937

938
939
# Temp. to work around performance problems in the HEAD around 8/12/2003,
# A Happy compiled with this compiler needs more stack.
Ian Lynagh's avatar
Ian Lynagh committed
940
SRC_HAPPY_OPTS		+= +RTS -K2m -RTS
941

942
943
944
945
946
947
948
949
#
# Alex
#
ALEX			= @AlexCmd@
ALEX_VERSION		= @AlexVersion@		
#
# Options to pass to Happy when we're going to compile the output with GHC
#
Ian Lynagh's avatar
Ian Lynagh committed
950
SRC_ALEX_OPTS		= -g
951

952
953
954
955
956
957
958
959
960
# Should we build haddock docs?
HADDOCK_DOCS = YES
# And HsColour the sources?
ifeq "$(HSCOLOUR)" ""
HSCOLOUR_SRCS = NO
else
HSCOLOUR_SRCS = YES
endif

961
#
962
# Options for compiling in different `ways'. 
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
# 
# To configure up your own way, have a look at some of the standard ways
# such as profiling, and create your own set of WAY_*_OPTS defs below.
# After having done that, add your way string to WAYS, and after having
# run the configure script, the different projects will add the new way
# to the list of ways they support.
#

#
# Definitions of the different ways:
#   
#   * their name:
#          - tag, e.g., p
#          - description, e.g., profiling
#   * what they mean to the driver:
#          - WAY_p_HC_OPTS gives the list of command-line options
#            to the driver.
#

#
# The ways currently defined.
#
Ian Lynagh's avatar
Ian Lynagh committed
985
ALL_WAYS=v p t l s mp mg debug dyn thr thr_l debug_dyn thr_dyn thr_debug_dyn thr_p thr_debug thr_debug_l
rrt's avatar
rrt committed
986
USER_WAYS=a b c d e f g h j k l m n o A B
987
988

#
989
# The following ways currently have treated specially, p t mg,
990
991
# as the driver script treats these guys specially and needs to carefully be told
# about the options for these. Hence, we hide the required command line options
992
# for these in the driver, as this is the only place they are needed.
993
994
# 
# If you want to add to these default options, fill in the variables below:
995

Ian Lynagh's avatar
Ian Lynagh committed
996
997
998
# Way 'v':
WAY_v_NAME=vanilla
WAY_v_HC_OPTS= 
rrt's avatar
rrt committed
999

1000
# Way 'p':