config.mk.in 36.5 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

35
################################################################################
sof's avatar
sof committed
36
#
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# GHC Version
#

# ProjectVersion    is treated as a *string*
# ProjectVersionInt is treated as an *integer* (for cpp defines)

# Versioning scheme: A.B.C
#         A: major version, decimal, any number of digits
#         B: minor version, decimal, any number of digits
#	  C: patchlevel, one digit, omitted if zero.
#
# ProjectVersionInt does *not* contain the patchlevel (rationale: this
# figure is used for conditional compilations, and library interfaces
# etc. are not supposed to change between patchlevels).
#
# The ProjectVersionInt is included in interface files, and GHC
# checks that it's reading interface generated by the same ProjectVersion
# as itself. It does this even though interface file syntax may not 
# change between versions.  Rationale: calling conventions or other 
# random .o-file stuff might change even if the .hi syntax doesn't

sven.panne@aedion.de's avatar
sven.panne@aedion.de committed
58
ProjectName       = @ProjectName@
59
60
61
62
63
64
65
ProjectVersion    = @ProjectVersion@
ProjectVersionInt = @ProjectVersionInt@
ProjectPatchLevel = @ProjectPatchLevel@

################################################################################
#
#		Platform variables
sof's avatar
sof committed
66
#
67
################################################################################
sof's avatar
sof committed
68
69
70

# A "platform" is the GNU cpu-type/manufacturer/operating-system target machine
# specifier.  E.g. sparc-sun-solaris2
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#
# Build  platform: the platform on which we are doing this build
# Host   platform: the platform on which these binaries will run
# Target platform: the platform for which this compiler will generate code
#
# We don't support build & host being different, because the build
# process creates binaries that are run during the build, and also
# installed.
#
# If host & target are different, then we are building a compiler
# which will generate intermediate .hc files to port to the target
# architecture for bootstrapping.  The libraries and stage 2 compiler
# will be built as HC files for the target system, and likely won't
# build on this host platform.
#
86
87
88
89
90
91
92
# An important invariant is that for any piece of source code, the
# platform on which the code is going to run is the HOST platform,
# and the platform on which we are building is the BUILD platform.
# Additionally for the compiler, the platform this compiler will
# generate code for is the TARGET.  TARGET is not meaningful outside
# the compiler sources.
#
93
94
95
96
97
98
99
100
101
# Guidelines for when to use HOST vs. TARGET:
#
#  - In the build system (Makefile, foo.mk), normally we should test
#    $(HOSTPLATFORM).  There are some cases (eg. installation), where
#    we expect $(HOSTPLATFORM)==$(TARGETPLATFORM), so in those cases it
#    doesn't matter which is used.
#
#  - In the compiler itself, we should test HOST or TARGET depending
#    on whether the conditional relates to the code being generated, or
102
103
#    the platform on which the compiler is running.  See the section
#    on "Coding Style" in the commentary for more details.
104
#
105
#  - In all other code, we should be testing HOST only.
106
107
108
109
#
# NOTE: cross-compiling is not well supported by the build system.
# You have to do a lot of work by hand to cross compile: see the
# section on "Porting GHC" in the Building Guide.
sof's avatar
sof committed
110
111
112

HOSTPLATFORM			= @HostPlatform@
TARGETPLATFORM			= @TargetPlatform@
113
BUILDPLATFORM			= @BuildPlatform@
sof's avatar
sof committed
114
115

# Hack alert:
116
117
118
# in one or two places, we need to get at the OS version (major and
# perhaps even minor), HostOS_Full is the OS name reported by
# AC_CANONICAL_SYSTEM.
sof's avatar
sof committed
119
120
121
122
123
124
125
#
HostPlatform_CPP		= @HostPlatform_CPP@
HostArch_CPP			= @HostArch_CPP@
HostOS_CPP			= @HostOS_CPP@
HostOS_Full			= @HostOS_Full@
HostVendor_CPP	                = @HostVendor_CPP@

126
127
128
129
130
131
132
133
134
TargetPlatform_CPP		= @TargetPlatform_CPP@
TargetArch_CPP			= @TargetArch_CPP@
TargetOS_CPP			= @TargetOS_CPP@
TargetVendor_CPP                = @TargetVendor_CPP@

BuildPlatform_CPP		= @BuildPlatform_CPP@
BuildArch_CPP			= @BuildArch_CPP@
BuildOS_CPP			= @BuildOS_CPP@
BuildVendor_CPP                 = @BuildVendor_CPP@
sof's avatar
sof committed
135

136
137
138
@HostPlatform_CPP@_HOST           = 1
@TargetPlatform_CPP@_TARGET       = 1
@BuildPlatform_CPP@_BUILD         = 1
sof's avatar
sof committed
139

140
141
142
@HostArch_CPP@_HOST_ARCH          = 1
@TargetArch_CPP@_TARGET_ARCH      = 1
@BuildArch_CPP@_BUILD_ARCH        = 1
sof's avatar
sof committed
143

144
145
146
@HostOS_CPP@_HOST_OS              = 1
@TargetOS_CPP@_TARGET_OS          = 1
@BuildOS_CPP@_BUILD_OS            = 1
sof's avatar
sof committed
147

148
149
150
@HostVendor_CPP@_HOST_VENDOR      = 1
@TargetVendor_CPP@_TARGET_VENDOR  = 1
@BuildVendor_CPP@_BUILD_VENDOR    = 1
sof's avatar
sof committed
151

152
153
154
155
156
157
################################################################################
#
#		Global configuration options
#
################################################################################

sof's avatar
sof committed
158
159
160
161
162
# Leading underscores on symbol names in object files
# Valid options: YES/NO
#
LeadingUnderscore=@LeadingUnderscore@

rrt's avatar
rrt committed
163
# Pin a suffix on executables? If so, what (Windows only).
sof's avatar
sof committed
164
exeext=@exeext@
165

166
167
168
169
170
171
172
# Windows=YES if on a Windows platform
ifneq "$(findstring $(HostOS_CPP), mingw32 cygwin32)" ""
Windows=YES
else
Windows=NO
endif

173
174
175
# BootingFromHc - build GHC and the libraries from .hc files?
BootingFromHc = @BootingFromHc@

ken's avatar
ken committed
176
177
178
179
# BootingFromUnregisterisedHc - treat .hc files as containing unregisterised
# rather than registerised code, i.e., disable the mangler?
BootingFromUnregisterisedHc = @BootingFromUnregisterisedHc@

180
181
#
# Which ways should DocBook XML documents be built?
182
# options are: dvi ps pdf html chm HxS
183
184
185
#
XMLDocWays=

186
################################################################################
187
188
#
# Variables that control how the compiler itself is built
sof's avatar
sof committed
189
#
190
################################################################################
191

192
193
# 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
194

195
196
197
198
199
# 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
200
# (Ones that are essential are wired into compiler/Makefile)
201
# Typical options to use here:
sof's avatar
sof committed
202
#
203
204
205
#	-DDEBUG		include debugging code and assertions (will make the
#			compiler slower and produce debugging output, but useful
#			for development)
sof's avatar
sof committed
206
207
#
#	-dcore-lint	check the types after every pass of the compiler;
208
209
210
211
#			a pretty strong internal check of the compiler being
#			used to compile GHC.  Useful when bootstrapping.
GhcHcOpts=-Rghc-timing

212
213
214
215
216
217
218
# 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=
GhcStage2HcOpts=
GhcStage3HcOpts=

219
220
221
222
223
224
225
226
227
228
# 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.
#
229
230
231
# 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.
232
#
233
234
235
ifneq "$(findstring $(HostArch_CPP), alpha hppa)" ""
GhcUnregisterised=YES
else
236
GhcUnregisterised=NO
237
endif
238

239
240
241
242
# Build a compiler with a native code generator backend
# (as well as a C backend)
#
# Target platforms supported:
243
244
#   i386, powerpc
#   sparc has bitrotted
245
246
247
248
#   AIX is not supported 
ArchSupportsNCG=$(strip $(patsubst $(HostArch_CPP), YES, $(findstring $(HostArch_CPP), i386 x86_64 powerpc)))
OsSupportsNCG=$(strip $(patsubst $(HostOS_CPP), YES, $(patsubst aix,,$(HostOS_CPP))))

249
ifeq "$(OsSupportsNCG)$(ArchSupportsNCG)$(GhcUnregisterised)" "YESYESNO"
250
251
252
253
GhcWithNativeCodeGen=YES
else
GhcWithNativeCodeGen=NO
endif
254

255
256
257
# Include support for generating Java
GhcWithJavaGen=NO

258
259
HaveLibDL = @HaveLibDL@

Simon Marlow's avatar
Simon Marlow committed
260
ArchSupportsSMP=$(strip $(patsubst $(HostArch_CPP), YES, $(findstring $(HostArch_CPP), i386 x86_64 sparc)))
261

262
ifeq "$(ArchSupportsSMP)$(GhcUnregisterised)" "YESNO"
263
264
265
266
267
GhcWithSMP=YES
else
GhcWithSMP=NO
endif

268
269
# Whether to include GHCi in the compiler.  Depends on whether the RTS linker
# has support for this OS/ARCH combination.
270

271
OsSupportsGHCi=$(strip $(patsubst $(HostOS_CPP), YES, $(findstring $(HostOS_CPP), mingw32 cygwin32 linux solaris2 freebsd netbsd openbsd darwin)))
272
ArchSupportsGHCi=$(strip $(patsubst $(HostArch_CPP), YES, $(findstring $(HostArch_CPP), i386 x86_64 powerpc sparc sparc64)))
273
274

ifeq "$(OsSupportsGHCi)$(ArchSupportsGHCi)" "YESYES"
275
276
GhcWithInterpreter=YES
else 
277
GhcWithInterpreter=NO
278
endif
279

280
281
282
283
284
# 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.
285
ifneq "$(findstring $(TargetArch_CPP)X, ia64X powerpc64X)" ""
286
GhcEnableTablesNextToCode=NO
287
else
288
GhcEnableTablesNextToCode=YES
289
290
endif

sof's avatar
sof committed
291
292
293
294
295
#
# Building various ways?
# (right now, empty if not).
BuildingParallel=$(subst mp,YES,$(filter mp,$(WAYS)))
BuildingGranSim=$(subst mg,YES,$(filter mg,$(WAYS)))
296

297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
# 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

316
#------------------------------------------------------------------------------
317
# Options for Libraries
318
319
320
321

# What extra ways to build the libraries in
# In addition to the normal sequential way, the default is to also build
# profiled prelude libraries.
sof's avatar
sof committed
322
# When booting from .hc files, turn this off.
323
ifeq "$(BootingFromHc)" "YES"
sof's avatar
sof committed
324
GhcLibWays=
sof's avatar
sof committed
325
else
sof's avatar
sof committed
326
GhcLibWays=p
sof's avatar
sof committed
327
endif
328

329
330
331
332
333
334
335
# 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
336
#   debug_u     : debugging unregisterised
337
338
#   thr_debug   : debugging threaded
#   thr_debug_p : debugging threaded profiled
339
340
341
342
#
ifeq "$(BootingFromHc)" "YES"
GhcRTSWays=
else
343
GhcRTSWays=thr thr_p debug thr_debug
344
345
endif

346
347
348
349
# 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
350
351
352
#
# 	-O is pretty desirable, otherwise no inlining of prelude
#		things (incl "+") happens when compiling with this compiler
353
354
355
356
357
#
#	-fgenerics switches on generation of support code for 
#		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
358

359
GhcLibHcOpts=-O -Rghc-timing -fgenerics
rrt's avatar
rrt committed
360

361
# Win32 only: Enable the RTS and libraries to be built as DLLs
362
DLLized=@EnableWin32DLLs@
363

364
365
366
367
368
# 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

369
370
371
372
373
374
375
376
377
# These are the URL patterns that Haddock uses to generate the "Source
# File" links on each page.
CorePackageSourceURL = http://darcs.haskell.org/ghc-6.6/packages/$(PACKAGE)/%{FILE}
ExtraPackageSourceURL = http://darcs.haskell.org/packages/$(PACKAGE)/%{FILE}

# These are the packages required to be present in order to bootstrap GHC
# NB. must be synced with libraries/core-packages
CorePackages = base Cabal haskell98 readline regex-base regex-compat \
	       regex-posix parsec stm template-haskell unix Win32
378
379
380
381
382
383
384
385
386

# ----------------------------------------------------------------------------
# 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
387
ifneq "$(findstring $(HostArch_CPP), i386 x86_64 powerpc sparc)" ""
dons's avatar
dons committed
388
389
390
391
SplitObjs=YES
else
SplitObjs=NO
endif
392

393
394
# Don't split object files for libs if we're building DLLs, or booting from
# .hc files.
395
ifeq "$(DLLized)" "YES"
rrt's avatar
rrt committed
396
397
SplitObjs=NO
endif
398
399
400
ifeq "$(BootingFromHc)" "YES"
SplitObjs=NO
endif
401
402
403
ifeq "$(GhcUnregisterised)" "YES"
SplitObjs=NO
endif
404
405
406
ifeq "$(TargetArch_CPP)" "ia64"
SplitObjs=NO
endif
407

sebc's avatar
sebc committed
408
409
410
# Math library
LIBM=@LIBM@

411
412
413
414
# Build the ObjectIO ?
#
GhcLibsWithObjectIO=@GhcLibsWithObjectIO@

sof's avatar
sof committed
415
416
417
418
# .NET interop support?
#
DotnetSupport=@DotnetSupport@

419
420
421
422
# Build unix package?
#
GhcLibsWithUnix=@GhcLibsWithUnix@

423
424
# ----------------------------------------------------------------------------
# Options for GHC's RTS
425

426
427
428
429
# 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
430

431
432
# Include the front panel code?  Needs GTK+.
GhcRtsWithFrontPanel = NO
433

434
################################################################################
435
#
436
#		nofib
437
438
439
#
# 	nofib specific options
#
440
################################################################################
441

442
WithNofibHc = $(GHC_INPLACE)
443
444
445
446
447
448
449
450
451
452

# NoFibSubDirs controls which set of tests should be run
# You can run one or more of
#	imaginary 
#	spectral
#	real
#	parallel
#	PRIVATE
#	PENDING
#	UNUSED
453
NoFibSubDirs = imaginary spectral real
454
455
456
457

# The different ways to build nofib. Default is just to mirror
# what is done for the ghc prelude libraries.
#
458
NoFibWays = $(GhcLibWays)
459
460

# Haskell compiler options for nofib
461
NoFibHcOpts = -O
462

463
464
465
# Number of times to run each program
NoFibRuns = 5

466
################################################################################
467
468
469
#
#		Paths (see paths.mk)
#
470
################################################################################
471

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

477
# DEFAULT_TMPDIR isn't called TMPDIR because GNU make tends to
478
479
480
# 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.
481
482

DEFAULT_TMPDIR		= /tmp
rrt's avatar
rrt committed
483
ifeq "$(TARGETPLATFORM)" "i386-unknown-cygwin32"
484
DEFAULT_TMPDIR		= /C/TEMP
rrt's avatar
rrt committed
485
486
endif
ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
487
DEFAULT_TMPDIR		= /C/TEMP
rrt's avatar
rrt committed
488
endif
489

sof's avatar
sof committed
490
491
492
493
# FPTOOLS_TOP: the top of the fptools hierarchy, absolute path. (POSIX / unix-style path).
FPTOOLS_TOP_ABS		= @hardtop@
# The platform specific version of 'hardtop'.
FPTOOLS_TOP_ABS_PLATFORM = @hardtop_plat@
494
495
496
497
498
499

#
# 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.

500
501
502
prefix			= @prefix@
exec_prefix		= @exec_prefix@
bindir			= @bindir@
503
504
datadir0		= @datadir@
libdir0			= @libdir@
505
506
includedir		= @includedir@
oldincludedir		= @oldincludedir@
507
mandir			= @mandir@
508

509
510
ifeq "$(Windows)" "YES"

511
ifeq "$(strip $(prefix))" ""
512
prefix		= /c/ghc
513
514
endif

515
516
517
# Hack: our directory layouts tend to be different on Windows, so
# hack around configure's bogus assumptions here.
datadir 	= $(prefix)
518
519
520
521
libdir		= $(prefix)

else

522
#
523
# Unix: override libdir and datadir to put ghc-specific stuff in
524
525
# a subdirectory with the version number included.
#
526
527
libdir     = $(libdir0)/ghc-$(ProjectVersion)
datadir    = $(datadir0)/ghc-$(ProjectVersion)
528

529
530
endif # Windows

531
532
# Default place for putting interface files is $(libdir)
# (overriden for packages in package.mk)
533
ifacedir		= $(libdir)
534

sof's avatar
sof committed
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
# 
# Default values for most of the above are only set if
# they weren't configured to anything in particular
# via the configure script. (i.e., we make no assumption
# that the autoconf-generated script will assign defaults
# to all of the above).
#
ifeq "$(strip $(exec_prefix))" ""
exec_prefix		= $(prefix)
endif
ifeq "$(strip $(bindir))" ""
bindir			= $(exec_prefix)/bin
endif

#
# 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)

ifeq "$(strip $(datadir))" ""
datadir		= $(prefix)/share
endif
ifeq "$(strip $(libdir))" ""
libdir		= $(exec_prefix)/lib
endif
ifeq "$(strip $(includedir))" ""
includedir	= $(prefix)/include
endif
ifeq "$(strip $(oldincludedir))" ""
oldincludedir	= /usr/include
endif
ifeq "$(strip $(mandir))" ""
mandir		= $(prefix)/man
endif
571

572
573
#-----------------------------------------------------------------------------
# install configuration
574

575
#
576
# Set this to have files installed with a specific owner
577
#
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
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
INSTALL_DIR     = $(MKDIRHIER)

# -----------------------------------------------------------------------------
# Utilities programs: flags 
597
598
599
600
601
602
603
604
605
606
607

# 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

608
SRC_HC_OPTS += -H16m -O
609

rrt's avatar
rrt committed
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
# These flags make flex 8-bit
SRC_FLEX_OPTS	+= -8

SRC_INSTALL_BIN_OPTS	+= -s

# lint gets all CPP's flags too
SRC_LINT_OPTS		+= -axz -DLINT $(SRC_CPP_OPTS)
WAY$(_way)_LINT_OPTS	+= WAY$(_way)_CPP_OPTS

# Default fptools options for dllwrap.
SRC_BLD_DLL_OPTS += -mno-cygwin --target=i386-mingw32

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

625

626
################################################################################
627
#
628
#	Layout of the source tree
629
#
630
################################################################################
631

632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
# Here we provide defines for the various directories in the source tree,
# so we can move things around more easily.  A define $(GHC_FOO_DIR_REL)
# indicates a directory relative to the top of the source tree, whereas
# $(GHC_FOO_DIR) is a directory relative to the current directory.
# $(GHC_FOO_DIR_ABS) is the absolute path to the directory.

GHC_UTILS_DIR_REL	= utils
GHC_INCLUDE_DIR_REL	= includes
GHC_COMPILER_DIR_REL	= compiler
GHC_RTS_DIR_REL	   	= rts
GHC_UTILS_DIR_REL 	= utils
GHC_DRIVER_DIR_REL	= driver
GHC_COMPAT_DIR_REL	= compat

GHC_MKDEPENDC_DIR_REL	= $(GHC_UTILS_DIR_REL)/mkdependC
GHC_LTX_DIR_REL		= $(GHC_UTILS_DIR_REL)/ltx
GHC_RUNTEST_DIR_REL	= $(GHC_UTILS_DIR_REL)/runstdtest
GHC_LNDIR_DIR_REL	= $(GHC_UTILS_DIR_REL)/lndir
GHC_MKDIRHIER_DIR_REL	= $(GHC_UTILS_DIR_REL)/mkdirhier
GHC_DOCBOOK_DIR_REL	= $(GHC_UTILS_DIR_REL)/docbook
GHC_UNLIT_DIR_REL    	= $(GHC_UTILS_DIR_REL)/unlit
GHC_HP2PS_DIR_REL	= $(GHC_UTILS_DIR_REL)/hp2ps
GHC_HSTAGS_DIR_REL	= $(GHC_UTILS_DIR_REL)/hasktags
GHC_HSC2HS_DIR_REL	= $(GHC_UTILS_DIR_REL)/hsc2hs
GHC_TOUCHY_DIR_REL	= $(GHC_UTILS_DIR_REL)/touchy
GHC_PKG_DIR_REL		= $(GHC_UTILS_DIR_REL)/ghc-pkg
GHC_GENPRIMOP_DIR_REL	= $(GHC_UTILS_DIR_REL)/genprimopcode
GHC_GENAPPLY_DIR_REL	= $(GHC_UTILS_DIR_REL)/genapply

GHC_MANGLER_DIR_REL	= $(GHC_DRIVER_DIR_REL)/mangler
GHC_SPLIT_DIR_REL	= $(GHC_DRIVER_DIR_REL)/split
GHC_SYSMAN_DIR_REL	= $(GHC_RTS_DIR_REL)/parallel

GHC_UTILS_DIR		= $(FPTOOLS_TOP)/$(GHC_UTILS_DIR_REL)
GHC_INCLUDE_DIR	  	= $(FPTOOLS_TOP)/$(GHC_INCLUDE_DIR_REL)
GHC_COMPILER_DIR	= $(FPTOOLS_TOP)/$(GHC_COMPILER_DIR_REL)
GHC_RTS_DIR	   	= $(FPTOOLS_TOP)/$(GHC_RTS_DIR_REL)
GHC_UTILS_DIR 		= $(FPTOOLS_TOP)/$(GHC_UTILS_DIR_REL)
GHC_DRIVER_DIR		= $(FPTOOLS_TOP)/$(GHC_DRIVER_DIR_REL)
GHC_COMPAT_DIR		= $(FPTOOLS_TOP)/$(GHC_COMPAT_DIR_REL)

GHC_MKDEPENDC_DIR	= $(FPTOOLS_TOP)/$(GHC_MKDEPENDC_DIR_REL)
GHC_LTX_DIR		= $(FPTOOLS_TOP)/$(GHC_LTX_DIR_REL)
GHC_RUNTEST_DIR		= $(FPTOOLS_TOP)/$(GHC_RUNTEST_DIR_REL)
GHC_LNDIR_DIR		= $(FPTOOLS_TOP)/$(GHC_LNDIR_DIR_REL)
GHC_MKDIRHIER_DIR	= $(FPTOOLS_TOP)/$(GHC_MKDIRHIER_DIR_REL)
GHC_DOCBOOK_DIR		= $(FPTOOLS_TOP)/$(GHC_DOCBOOK_DIR_REL)
GHC_UNLIT_DIR    	= $(FPTOOLS_TOP)/$(GHC_UNLIT_DIR_REL)
GHC_HP2PS_DIR		= $(FPTOOLS_TOP)/$(GHC_HP2PS_DIR_REL)
GHC_HSTAGS_DIR		= $(FPTOOLS_TOP)/$(GHC_HSTAGS_DIR_REL)
GHC_HSC2HS_DIR		= $(FPTOOLS_TOP)/$(GHC_HSC2HS_DIR_REL)
GHC_TOUCHY_DIR		= $(FPTOOLS_TOP)/$(GHC_TOUCHY_DIR_REL)
GHC_PKG_DIR		= $(FPTOOLS_TOP)/$(GHC_PKG_DIR_REL)
GHC_GENPRIMOP_DIR	= $(FPTOOLS_TOP)/$(GHC_GENPRIMOP_DIR_REL)
GHC_GENAPPLY_DIR	= $(FPTOOLS_TOP)/$(GHC_GENAPPLY_DIR_REL)

GHC_MANGLER_DIR		= $(FPTOOLS_TOP)/$(GHC_MANGLER_DIR_REL)
GHC_SPLIT_DIR		= $(FPTOOLS_TOP)/$(GHC_SPLIT_DIR_REL)
GHC_SYSMAN_DIR		= $(FPTOOLS_TOP)/$(GHC_SYSMAN_DIR_REL)

GHC_UTILS_DIR_ABS	= $(FPTOOLS_TOP_ABS)/$(GHC_UTILS_DIR_REL)
GHC_INCLUDE_DIR_ABS	= $(FPTOOLS_TOP_ABS)/$(GHC_INCLUDE_DIR_REL)
GHC_COMPILER_DIR_ABS	= $(FPTOOLS_TOP_ABS)/$(GHC_COMPILER_DIR_REL)
GHC_RTS_DIR_ABS	   	= $(FPTOOLS_TOP_ABS)/$(GHC_RTS_DIR_REL)
GHC_UTILS_DIR_ABS	= $(FPTOOLS_TOP_ABS)/$(GHC_UTILS_DIR_REL)
GHC_DRIVER_DIR_ABS	= $(FPTOOLS_TOP_ABS)/$(GHC_DRIVER_DIR_REL)
GHC_COMPAT_DIR_ABS	= $(FPTOOLS_TOP_ABS)/$(GHC_COMPAT_DIR_REL)

GHC_MKDEPENDC_DIR_ABS	= $(FPTOOLS_TOP_ABS)/$(GHC_MKDEPENDC_DIR_REL)
GHC_LTX_DIR_ABS		= $(FPTOOLS_TOP_ABS)/$(GHC_LTX_DIR_REL)
GHC_RUNTEST_DIR_ABS	= $(FPTOOLS_TOP_ABS)/$(GHC_RUNTEST_DIR_REL)
GHC_LNDIR_DIR_ABS	= $(FPTOOLS_TOP_ABS)/$(GHC_LNDIR_DIR_REL)
GHC_MKDIRHIER_DIR_ABS	= $(FPTOOLS_TOP_ABS)/$(GHC_MKDIRHIER_DIR_REL)
GHC_DOCBOOK_DIR_ABS	= $(FPTOOLS_TOP_ABS)/$(GHC_DOCBOOK_DIR_REL)
GHC_UNLIT_DIR    	= $(FPTOOLS_TOP_ABS)/$(GHC_UNLIT_DIR_REL)
GHC_HP2PS_DIR_ABS	= $(FPTOOLS_TOP_ABS)/$(GHC_HP2PS_DIR_REL)
GHC_HSTAGS_DIR_ABS	= $(FPTOOLS_TOP_ABS)/$(GHC_HSTAGS_DIR_REL)
GHC_HSC2HS_DIR_ABS	= $(FPTOOLS_TOP_ABS)/$(GHC_HSC2HS_DIR_REL)
GHC_TOUCHY_DIR_ABS	= $(FPTOOLS_TOP_ABS)/$(GHC_TOUCHY_DIR_REL)
GHC_PKG_DIR_ABS		= $(FPTOOLS_TOP_ABS)/$(GHC_PKG_DIR_REL)
GHC_GENPRIMOP_DIR_ABS	= $(FPTOOLS_TOP_ABS)/$(GHC_GENPRIMOP_DIR_REL)
GHC_GENAPPLY_DIR_ABS	= $(FPTOOLS_TOP_ABS)/$(GHC_GENAPPLY_DIR_REL)

GHC_MANGLER_DIR_ABS	= $(FPTOOLS_TOP_ABS)/$(GHC_MANGLER_DIR_REL)
GHC_SYSMAN_DIR_ABS	= $(FPTOOLS_TOP_ABS)/$(GHC_SYSMAN_DIR_REL)
GHC_SPLIT_DIR_ABS	= $(FPTOOLS_TOP_ABS)/$(GHC_SPLIT_DIR_REL)
718

719
720
721
722
723
724
725
# -----------------------------------------------------------------------------
# Names of programs in the GHC tree
#
#      xxx_PGM	        the name of an executable, without the path
#      xxx		the executable relative to the current dir

GHC_UNLIT_PGM		= unlit$(exeext)
ravi@bluespec.com's avatar
ravi@bluespec.com committed
726
GHC_HP2PS_PGM		= hp2ps
727
728
729
730
731
732
733
734
735
736
737
738
739
740
GHC_HSTAGS_PGM		= hasktags
GHC_HSC2HS_INPLACE_PGM	= hsc2hs-inplace
GHC_TOUCHY_PGM		= touchy$(exeext)
GHC_MANGLER_PGM		= ghc-asm
GHC_SPLIT_PGM		= ghc-split
GHC_SYSMAN_PGM 		= SysMan
GHC_PKG_INPLACE_PGM	= ghc-pkg-inplace
GHC_GENPRIMOP_PGM	= genprimopcode
GHC_GENAPPLY_PGM	= genapply
GHC_MKDEPENDC_PGM 	= mkdependC
GHC_LTX_PGM 		= ltx
GHC_MKDIRHIER_PGM	= mkdirhier
GHC_LNDIR_PGM		= lndir
GHC_RUNTEST_PGM		= runstdtest
741

742
743
744
745
746
747
748
ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
GHC_CP			= "xcopy /y"
GHC_PERL		= perl
else
GHC_CP			= $(CP)
GHC_PERL		= $(PERL)
endif
749

750
UNLIT			= $(GHC_UNLIT_DIR)/$(GHC_UNLIT_PGM)
ravi@bluespec.com's avatar
ravi@bluespec.com committed
751
HP2PS			= $(GHC_HP2PS_DIR)/$(GHC_HP2PS_PGM)
752
753
754
755
756
757
758
759
760
761
762
763
764
HSTAGS			= $(GHC_HSTAGS_DIR)/$(GHC_HSTAGS_PGM)
HSC2HS_INPLACE		= $(GHC_HSC2HS_DIR)/$(GHC_HSC2HS_INPLACE_PGM)
MANGLER			= $(GHC_MANGLER_DIR)/$(GHC_MANGLER_PGM)
SPLIT			= $(GHC_SPLIT_DIR)/$(GHC_SPLIT_PGM)
SYSMAN 			= $(GHC_SYSMAN_DIR)/$(GHC_SYSMAN_PGM)
GHC_PKG_INPLACE		= $(GHC_PKG_DIR)/$(GHC_PKG_INPLACE_PGM)
GENPRIMOP		= $(GHC_GENPRIMOP_DIR)/$(GHC_GENPRIMOP_PGM)
GENAPPLY		= $(GHC_GENAPPLY_DIR)/$(GHC_GENAPPLY_PGM)
MKDEPENDC 		= $(GHC_MKDEPENDC_DIR)/$(GHC_MKDEPENDC_PGM)
LTX 			= $(GHC_LTX_DIR)/$(GHC_LTX_PGM)
MKDIRHIER		= $(GHC_MKDIRHIER_DIR)/$(GHC_MKDIRHIER_PGM)
LNDIR			= $(GHC_LNDIR_DIR)/$(GHC_LNDIR_PGM)
RUNTEST			= $(GHC_RUNTEST_DIR)/$(GHC_RUNTEST_PGM)
765
766

#-----------------------------------------------------------------------------
767
768
769
770
771
772
773
# 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).
774
775
776
#
# NOTE: Don't override $(GHC) in build.mk, use configure --with-ghc instead
# (because the version numbers have to be calculated).
777

778
GHC		= @WithGhc@
779
GhcDir          = $(dir $(GHC))
780

781
782
783
# Set to YES if $(GHC) has the readline package installed
GhcHasReadline	= @GhcHasReadline@

784
785
HBC		= @HBC@
NHC		= @NHC@
786

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

791
792
793
794
795
GHC_INPLACE 	= $(GHC_COMPILER_DIR)/ghc-inplace
GHC_STAGE1 	= $(GHC_COMPILER_DIR)/stage1/ghc-inplace
GHC_STAGE2 	= $(GHC_COMPILER_DIR)/stage2/ghc-inplace
GHC_STAGE3 	= $(GHC_COMPILER_DIR)/stage3/ghc-inplace

796
797
798
799
800
801
802
803
804
805
806
ifneq "$(findstring YES, $(UseStage1) $(BootingFromHc))" ""

# We are using the stage1 compiler to compile Haskell code, set up
# some variables appropriately:
HC		=$(GHC_STAGE1)
MKDEPENDHS	=$(GHC_STAGE1)
GhcVersion	= @ProjectVersion@
GhcPatchLevel	= @ProjectPatchLevel@
# oops, these are wrong:
GhcMajVersion	= @GhcMajVersion@
GhcMinVersion	= @GhcMinVersion@
807
808
809
810
811

ghc_ge_504 = YES
ghc_ge_601 = YES
ghc_ge_602 = YES
ghc_ge_603 = YES
Simon Marlow's avatar
Simon Marlow committed
812
ghc_ge_605 = YES
813
814
815
816
817
818
819
820
821
822
823

else # not UseStage1 or BootingFromHc

HC	        = @WithHc@
MKDEPENDHS	= $(GHC)
GhcVersion	= @GhcVersion@
GhcPatchLevel	= @GhcPatchLevel@
GhcMajVersion	= @GhcMajVersion@
GhcMinVersion	= @GhcMinVersion@

# Some useful GHC version predicates:
824
825
826
827
ghc_ge_504 = $(shell if (test $(GhcCanonVersion) -ge 504); then echo YES; else echo NO; fi)
ghc_ge_601 = $(shell if (test $(GhcCanonVersion) -ge 601); then echo YES; else echo NO; fi)
ghc_ge_602 = $(shell if (test $(GhcCanonVersion) -ge 602); then echo YES; else echo NO; fi)
ghc_ge_603 = $(shell if (test $(GhcCanonVersion) -ge 603); then echo YES; else echo NO; fi)
Simon Marlow's avatar
Simon Marlow committed
828
ghc_ge_605 = $(shell if (test $(GhcCanonVersion) -ge 605); then echo YES; else echo NO; fi)
829
endif
830
831
832
833
834
835
836
837

# 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)
838
endif
839

840
841
842
#-----------------------------------------------------------------------------
# C compiler
#
843
844
845
846
# 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.

847
848
HaveGcc 	= @HaveGcc@
UseGcc  	= YES
sof's avatar
sof committed
849
WhatGccIsCalled = @WhatGccIsCalled@
850
GccVersion      = @GccVersion@
851
852
853
854
855
ifeq "$(strip $(HaveGcc))" "YES"
ifneq "$(strip $(UseGcc))"  "YES"
  CC	= cc
else
  CC	= $(WhatGccIsCalled)
856
  GccDir = $(dir $(WhatGccIsCalled))
857
858
859
endif
endif

860
# default C compiler flags
sof's avatar
sof committed
861
SRC_CC_OPTS = @SRC_CC_OPTS@
862

863
864
865
866
ifeq "$(TARGETPLATFORM)" "ia64-unknown-linux"
SRC_CC_OPTS += -G0
endif

867
#-----------------------------------------------------------------------------
868
# GMP Library (version 2.0.x or above)
869
870
#
HaveLibGmp	= @HaveLibGmp@
871
LibGmp		= @LibGmp@
872

873
#-----------------------------------------------------------------------------
874
# GMP framework (Mac OS X)
875
#
876
HaveFrameworkGMP = @HaveFrameworkGMP@
877

878
#-----------------------------------------------------------------------------
879
# Mingwex Library
880
#
881
HaveLibMingwEx	= @HaveLibMingwEx@
882

883
#-----------------------------------------------------------------------------
884
# Flex (currently unused, could be moved to glafp-utils)
885

886
# FLEX			= @LEX@
sof's avatar
sof committed
887
# Don't bother with -lfl, we define our own yywrap()s anyway.
888
# FLEX_LIB		= 
sof's avatar
sof committed
889
#WAS:FLEX_LIB		= @LEXLIB@
890
891
892
893
894

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

AR			= @ArCmd@
ken's avatar
ken committed
895
ArSupportsInput		= @ArSupportsInput@
896
897
898
899
900
# Yuckage: for ghc/utils/parallel -- todo: nuke this dependency!!
BASH                    = /usr/local/bin/bash

CONTEXT_DIFF		= @ContextDiffCmd@
CP			= cp
sof's avatar
sof committed
901
CPP			= @CPP@ @CPPFLAGS@
902
CTAGS 			= $(ETAGS)
903
904
905
906
907
#
# 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
908
FIND			= @FindCmd@
sof's avatar
sof committed
909
SORT		        = @SortCmd@
910
INSTALL			= @INSTALL@
sof's avatar
sof committed
911
912
913
914
915
#
# 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.
# 
sof's avatar
sof committed
916
INSTALL			:= $(subst .././install-sh,$(FPTOOLS_TOP_ABS)/install-sh,$(INSTALL))
917
LATEX			= latex
rrt's avatar
rrt committed
918
919
HEVEA			= hevea
HACHA			= hacha
920
921
922
923
924
925
LN_S			= @LN_S@
MANMACROS		= -man
MSMACROS 		= -ms
MV			= mv
NROFF			= nroff
PERL 			= @PerlCmd@
926
PYTHON			= @PythonCmd@
927
928
929
930
931
932
PIC			= pic
PREPROCESSCMD		= $(CC) -E
RANLIB			= @RANLIB@
RM			= rm -f
SED			= @SedCmd@
SHELL			= /bin/sh
933

934
935
LD			= @LdCmd@

936
937
938
939
940
# 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@

941
942
943
944
# 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
945
946
947
948
949
950
951
952
#
# 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
953
# long command lines is either encountered while doing `make boot' in compiler/, 
sof's avatar
sof committed
954
955
956
957
958
# 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
959
# By default, REAL_SHELL is set equal to SHELL, which is not really a smart move
960
# as it is SHELL that will show up the bogosity in the first place, but setting
sof's avatar
sof committed
961
962
963
964
965
966
967
# 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)
968
969
970
SIZE			= size
STRIP			= strip
TAR			= @TarCmd@
sof's avatar
sof committed
971
ZIP			= zip
sof's avatar
sof committed
972

973
974
975
976
977
978
979
980
981
982
983
984
985
986
#
# 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

987
988
989
# GTK+
GTK_CONFIG = @GTK_CONFIG@

990
991
992
# PAPI
USE_PAPI   = @USE_PAPI@

993
994
995
996
997
998
999
1000
1001
1002
1003
1004
#-----------------------------------------------------------------------------
# DocBook XML stuff

XSLTPROC		= @XsltprocCmd@
XMLLINT			= @XmllintCmd@
FOP			= @FopCmd@
XMLTEX			= @XmltexCmd@
PDFXMLTEX		= @PdfxmltexCmd@
DVIPS			= @DvipsCmd@

DIR_DOCBOOK_XSL		= @DIR_DOCBOOK_XSL@

1005
1006
1007
1008
XSLTPROC_LABEL_OPTS	= --stringparam toc.section.depth 3 \
			  --stringparam section.autolabel 1 \
			  --stringparam section.label.includes.component.label 1

1009
1010
1011
#-----------------------------------------------------------------------------
# 		FPtools support software

sof's avatar
sof committed
1012
1013
BLD_DLL			= dllwrap

rrt's avatar
rrt committed
1014
1015
1016
1017
1018
1019
#
# .NET support software
#
ILX2IL                  = ilx2il
ILASM                   = ilasm

reid's avatar
reid committed
1020
1021
1022
1023
1024
1025
#
# ghc-pkg
#
GHC_PKG		        = @GhcPkgCmd@

#
1026
# GreenCard
reid's avatar
reid committed
1027
#
1028
1029
GREENCARD	        = @GreenCardCmd@
GREENCARD_VERSION	= @GreenCardVersion@		
reid's avatar
reid committed
1030

1031
1032
1033
1034
1035
1036
1037
1038
#
# Happy
#
HAPPY			= @HappyCmd@
HAPPY_VERSION		= @HappyVersion@		
#
# Options to pass to Happy when we're going to compile the output with GHC
#
1039
GHC_HAPPY_OPTS		= -agc
1040

1041
1042
1043
1044
# Temp. to work around performance problems in the HEAD around 8/12/2003,
# A Happy compiled with this compiler needs more stack.
SRC_HAPPY_OPTS		= +RTS -K2m -RTS

1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
#
# Alex
#
ALEX			= @AlexCmd@
ALEX_VERSION		= @AlexVersion@		
#
# Options to pass to Happy when we're going to compile the output with GHC
#
GHC_ALEX_OPTS		= -g

1055
1056
1057
#
# Haddock
# 
1058
HADDOCK			= @HaddockCmd@
1059
1060

#
1061
# Options for compiling in different `ways'. 
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
# 
# 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.
#
1084
ALL_WAYS=p t u s mp mg a b c d e f g h i j k l m n o A B
rrt's avatar
rrt committed
1085
USER_WAYS=a b c d e f g h j k l m n o A B
1086
1087

#
1088
# The following ways currently have treated specially, p u t mg,
1089
1090
# 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
1091
# for these in the driver, as this is the only place they are needed.
1092
1093
# 
# If you want to add to these default options, fill in the variables below:
1094

rrt's avatar
rrt committed
1095
1096
# Way 'i':
WAY_i_NAME=ILX
rrt's avatar
rrt committed
1097
WAY_i_HC_OPTS= -filx -fruntime-types
rrt's avatar
rrt committed
1098

1099
# Way 'p':
1100
1101
1102
WAY_p_NAME=profiling
WAY_p_HC_OPTS= -prof

1103
# Way 't':
1104
1105
1106
1107
1108
WAY_t_NAME=ticky-ticky profiling
WAY_t_HC_OPTS= -ticky

# Way `u':
WAY_u_NAME=unregisterized (using portable C only)
1109
WAY_u_HC_OPTS=-unreg
1110
1111
1112
1113
1114
1115
1116
1117
1118

# Way `mp': 
WAY_mp_NAME=parallel
WAY_mp_HC_OPTS=-parallel

# Way `mg': 
WAY_mg_NAME=GranSim
WAY_mg_HC_OPTS=-gransim

1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
#
# These ways apply to the RTS only:
#

# Way 'thr':
WAY_thr_NAME=threaded
WAY_thr_HC_OPTS=-optc-DTHREADED_RTS

# Way 'thr_p':
WAY_thr_p_NAME=threaded profiled
WAY_thr_p_HC_OPTS=-optc-DTHREADED_RTS -prof

# Way 'debug':
WAY_debug_NAME=debug
WAY_debug_HC_OPTS=-optc-DDEBUG

# Way 'debug_p':
WAY_debug_p_NAME=debug profiled
WAY_debug_p_HC_OPTS=-optc-DDEBUG -prof

1139
1140
1141
1142
# Way 'debug_u':
WAY_debug_u_NAME=debug unregisterised
WAY_debug_u_HC_OPTS=-optc-DDEBUG -unreg

1143
1144
1145
1146
1147
1148
1149
1150
# Way 'thr_debug':
WAY_thr_debug_NAME=threaded
WAY_thr_debug_HC_OPTS=-optc-DTHREADED_RTS -optc-DDEBUG

# Way 'thr_debug_p':
WAY_thr_debug_p_NAME=threaded
WAY_thr_debug_p_HC_OPTS=-optc-DTHREADED_RTS -optc-DDEBUG -prof

1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
#
# Add user-way configurations here:
#
WAY_A_NAME=
WAY_A_HC_OPTS=

WAY_B_NAME=
WAY_B_HC_OPTS=

WAY_a_NAME=
WAY_a_HC_OPTS=

WAY_b_NAME=
WAY_b_HC_OPTS=

WAY_c_NAME=
WAY_c_HC_OPTS=

WAY_d_NAME=
WAY_d_HC_OPTS=

WAY_e_NAME=
WAY_e_HC_OPTS=

WAY_f_NAME=
WAY_f_HC_OPTS=

WAY_g_NAME=
WAY_g_HC_OPTS=

WAY_h_NAME=
WAY_h_HC_OPTS=

WAY_j_NAME=
WAY_j_HC_OPTS=

WAY_k_NAME=
WAY_k_HC_OPTS=

WAY_l_NAME=
WAY_l_HC_OPTS=

WAY_m_NAME=
WAY_m_HC_OPTS=

WAY_n_NAME=
WAY_n_HC_OPTS=

WAY_o_NAME=
WAY_o_HC_OPTS=
apt's avatar
apt committed
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220

################################################################################
#
#		31-bit-Int Core files
#
################################################################################

# 
# It is possible to configure the compiler and prelude to support 31-bit
# integers, suitable for a back-end and RTS using a tag bit on a 32-bit
# architecture.  Currently the only useful output from this option is external Core
# files.  The following additions to your build.mk will produce the
# 31-bit core output.  Note that this is *not* just a library "way"; the
# compiler must be built a special way too.

# GhcCppOpts +=-DWORD_SIZE_IN_BITS=31
# GhcLibHcOpts +=-fext-core -fno-code -DWORD_SIZE_IN_BITS=31
# GhcLibCppOpts += -DWORD_SIZE_IN_BITS=31
# SplitObjs=NO