config.mk.in 43 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
ProjectTags       =
ProjectVersion    = @ProjectVersion@$(ProjectTags)
61
62
63
64
65
66
ProjectVersionInt = @ProjectVersionInt@
ProjectPatchLevel = @ProjectPatchLevel@

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

# A "platform" is the GNU cpu-type/manufacturer/operating-system target machine
# specifier.  E.g. sparc-sun-solaris2
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#
# 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.
#
87
88
89
90
91
92
93
# 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.
#
94
95
96
97
98
99
100
101
102
# 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
103
104
#    the platform on which the compiler is running.  See the section
#    on "Coding Style" in the commentary for more details.
105
#
106
#  - In all other code, we should be testing HOST only.
107
108
109
110
#
# 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
111
112
113

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

# Hack alert:
117
118
119
# 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
120
121
122
123
124
125
126
#
HostPlatform_CPP		= @HostPlatform_CPP@
HostArch_CPP			= @HostArch_CPP@
HostOS_CPP			= @HostOS_CPP@
HostOS_Full			= @HostOS_Full@
HostVendor_CPP	                = @HostVendor_CPP@

127
128
129
130
131
132
133
134
135
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
136

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

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

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

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

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

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

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

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

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

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

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

188
189
# Mac OS X deployment target (to cross-compile for older OS versions)
#
190
191
192
193
194
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) \
195
196
			    -isysroot $(MACOSX_DEPLOYMENT_SDK) \
			    --no-builtin-fprintf
197
198
199
200
201
202
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.
203
204
205
206
#
# 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).
207
endif
208

209
################################################################################
210
211
#
# Variables that control how the compiler itself is built
sof's avatar
sof committed
212
#
213
################################################################################
214

215
216
# 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
217

218
219
220
221
222
# 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
223
# (Ones that are essential are wired into compiler/Makefile)
224
# Typical options to use here:
sof's avatar
sof committed
225
#
226
227
228
#	-DDEBUG		include debugging code and assertions (will make the
#			compiler slower and produce debugging output, but useful
#			for development)
sof's avatar
sof committed
229
230
#
#	-dcore-lint	check the types after every pass of the compiler;
231
232
233
234
#			a pretty strong internal check of the compiler being
#			used to compile GHC.  Useful when bootstrapping.
GhcHcOpts=-Rghc-timing

235
236
237
238
# 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=
239
240
GhcStage2HcOpts=-O2
GhcStage3HcOpts=-O2
241

242
GhcProfiled=NO
243
GhcDebugged=NO
244

245
246
247
248
249
250
251
252
253
254
# 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.
#
255
256
257
# 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.
258
#
259
260
261
ifneq "$(findstring $(HostArch_CPP), alpha hppa)" ""
GhcUnregisterised=YES
else
262
GhcUnregisterised=NO
263
endif
264

265
266
267
268
# Build a compiler with a native code generator backend
# (as well as a C backend)
#
# Target platforms supported:
269
270
#   i386, powerpc
#   sparc has bitrotted
271
272
273
274
#   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))))

275
276
277
278
# lazy test, because $(GhcUnregisterised) might be set in build.mk later.
GhcWithNativeCodeGen=$(strip\
    $(if $(filter YESYESNO,\
		  $(OsSupportsNCG)$(ArchSupportsNCG)$(GhcUnregisterised)),YES,NO))
279

280
281
282
# Include support for generating Java
GhcWithJavaGen=NO

283
284
HaveLibDL = @HaveLibDL@

285
286
287
# 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)))
288

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

292
293
# Whether to include GHCi in the compiler.  Depends on whether the RTS linker
# has support for this OS/ARCH combination.
294

295
OsSupportsGHCi=$(strip $(patsubst $(HostOS_CPP), YES, $(findstring $(HostOS_CPP), mingw32 cygwin32 linux solaris2 freebsd netbsd openbsd darwin)))
296
ArchSupportsGHCi=$(strip $(patsubst $(HostArch_CPP), YES, $(findstring $(HostArch_CPP), i386 x86_64 powerpc sparc sparc64)))
297
298

ifeq "$(OsSupportsGHCi)$(ArchSupportsGHCi)" "YESYES"
299
300
GhcWithInterpreter=YES
else 
301
GhcWithInterpreter=NO
302
endif
303

304
305
306
307
308
# 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.
309
ifneq "$(findstring $(TargetArch_CPP)X, ia64X powerpc64X)" ""
310
GhcEnableTablesNextToCode=NO
311
else
312
GhcEnableTablesNextToCode=YES
313
314
endif

Ian Lynagh's avatar
Ian Lynagh committed
315
316
317
318
319
320
321
322
# 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

323
324
325
326
# When building bindists we set this to yes so that the binaries are as
# portable as possible.
BeConservative = NO

sof's avatar
sof committed
327
328
329
330
331
#
# Building various ways?
# (right now, empty if not).
BuildingParallel=$(subst mp,YES,$(filter mp,$(WAYS)))
BuildingGranSim=$(subst mg,YES,$(filter mg,$(WAYS)))
332

333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
# 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

352
353
MakefileDeps=YES

354
#------------------------------------------------------------------------------
355
# Options for Libraries
356

357
358
359
# Which directory (in libraries/) contains the integer library?
INTEGER_LIBRARY=integer-gmp

360
361
362
# 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
363
# When booting from .hc files, turn this off.
364
ifeq "$(BootingFromHc)" "YES"
sof's avatar
sof committed
365
GhcLibWays=
sof's avatar
sof committed
366
else
sof's avatar
sof committed
367
GhcLibWays=p
sof's avatar
sof committed
368
endif
369

370
371
372
373
374
375
376
# 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
377
378
#   thr_debug   : debugging threaded
#   thr_debug_p : debugging threaded profiled
379
380
#   t		: ticky-ticky profiling
#   debug_t	: debugging ticky-ticky profiling
381
382
#
GhcRTSWays=
383
384
385
386
387
388
389

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

# Want the threaded versions unless we're unregisterised
Simon Marlow's avatar
Simon Marlow committed
390
391
392
# Defer the check until later by using $(if..), because GhcUnregisterised might
# be set in build.mk, which hasn't been read yet.
GhcRTSWays += $(if $(findstring NO, $(GhcUnregisterised)),thr thr_p thr_debug,)
393

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

397
398
399
400
# 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
401
#
402
# 	-O(2) is pretty desirable, otherwise no inlining of prelude
sof's avatar
sof committed
403
#		things (incl "+") happens when compiling with this compiler
404
#
405
#	-XGenerics switches on generation of support code for 
406
407
408
#		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
409

410
GhcLibHcOpts=-O2 -Rghc-timing -XGenerics
rrt's avatar
rrt committed
411

412
# Win32 only: Enable the RTS and libraries to be built as DLLs
413
DLLized=@EnableWin32DLLs@
414

415
416
417
418
419
# 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

420
421
# These are the URL patterns that Haddock uses to generate the "Source
# File" links on each page.
422
PackageSourceURL = http://darcs.haskell.org/packages/$(PACKAGE)/%{FILE}
423
424
425
426
427
428
429
430
431
432

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

433
434
435
436
437
438
439
440
# lazy test, so that $(GhcUnregisterised) can be set in build.mk
SplitObjs=$(strip $(if $(filter $(TargetArch_CPP),i386 x86_64 powerpc sparc),\
	            $(if $(filter YES,$(BootingFromHC)),\
		      NO,\
	              $(if $(filter NO,$(GhcUnregisterised)),\
			YES,\
			NO)),\
		    NO))
441

sebc's avatar
sebc committed
442
443
444
# Math library
LIBM=@LIBM@

445
446
447
448
# Build the ObjectIO ?
#
GhcLibsWithObjectIO=@GhcLibsWithObjectIO@

sof's avatar
sof committed
449
450
451
452
# .NET interop support?
#
DotnetSupport=@DotnetSupport@

453
454
455
456
# Build unix package?
#
GhcLibsWithUnix=@GhcLibsWithUnix@

457
458
# ----------------------------------------------------------------------------
# Options for GHC's RTS
459

460
461
462
463
# 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
464

465
466
# Include the front panel code?  Needs GTK+.
GhcRtsWithFrontPanel = NO
467

468
469
470
# Include support for CPU performance counters via the PAPI library in the RTS?
# (PAPI: http://icl.cs.utk.edu/papi/)
GhcRtsWithPapi = NO
471
472
PapiLibDir=
PapiIncludeDir=
473

474
################################################################################
475
#
476
#		nofib
477
478
479
#
# 	nofib specific options
#
480
################################################################################
481

482
WithNofibHc = $(GHC_INPLACE)
483
484
485
486
487
488
489
490
491
492

# NoFibSubDirs controls which set of tests should be run
# You can run one or more of
#	imaginary 
#	spectral
#	real
#	parallel
#	PRIVATE
#	PENDING
#	UNUSED
493
NoFibSubDirs = imaginary spectral real
494
495
496
497

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

# Haskell compiler options for nofib
501
NoFibHcOpts = -O
502

503
504
505
# Number of times to run each program
NoFibRuns = 5

506
################################################################################
507
508
509
#
#		Paths (see paths.mk)
#
510
################################################################################
511

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

517
# DEFAULT_TMPDIR isn't called TMPDIR because GNU make tends to
518
519
520
# 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.
521
522

DEFAULT_TMPDIR		= /tmp
rrt's avatar
rrt committed
523
ifeq "$(TARGETPLATFORM)" "i386-unknown-cygwin32"
524
DEFAULT_TMPDIR		= /C/TEMP
rrt's avatar
rrt committed
525
526
endif
ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
527
DEFAULT_TMPDIR		= /C/TEMP
rrt's avatar
rrt committed
528
endif
529

530
531
# FPTOOLS_TOP: the top of the fptools hierarchy, absolute path.
# On Windows this is a c:/foo/bar style path.
sof's avatar
sof committed
532
FPTOOLS_TOP_ABS		= @hardtop@
533

534
BIN_DIST_NAME=ghc-$(ProjectVersion)
535
536
BIN_DIST_TOPDIR_ABS=$(FPTOOLS_TOP_ABS)
BIN_DIST_DIR=$(BIN_DIST_TOPDIR_ABS)/$(BIN_DIST_NAME)
537
BIN_DIST_TARBALL=$(FPTOOLS_TOP_ABS)/$(BIN_DIST_NAME)-$(TARGETPLATFORM).tar.bz2
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
# 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.
565

566
567
568
# This gets used in the default docdir when autoconf >= 2.60 is used
PACKAGE_TARNAME := @PACKAGE_TARNAME@

569
prefix          := @prefix@
570
571
572
573

# 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.
574
575
576
# 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@
577

578
579
580
581
582
583
exec_prefix     := @exec_prefix@
bindir          := @bindir@
datadir0        := @datadir@
libdir0         := @libdir@
includedir      := @includedir@
mandir          := @mandir@
Clemens Fruhwirth's avatar
Clemens Fruhwirth committed
584
dynlibdir       := @libdir@
585

586
ifeq "$(RelocatableBuild)" "YES"
587
588
589

# Hack: our directory layouts tend to be different on Windows, so
# hack around configure's bogus assumptions here.
590
591
592
datarootdir := $(prefix)
datadir     := $(prefix)
libdir      := $(prefix)
593

594
595
596
597
598
599
docdir    := $(prefix)/doc
htmldir   := $(docdir)
dvidir    := $(docdir)
pdfdir    := $(docdir)
psdir     := $(docdir)

600
601
else

602
# Unix: override libdir and datadir to put ghc-specific stuff in
603
# a subdirectory with the version number included.
604
605
606
datarootdir := $(datadir0)
datadir     := $(datadir0)/ghc-$(ProjectVersion)
libdir      := $(libdir0)/ghc-$(ProjectVersion)
607

608
609
610
# 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.

611
612
613
614
615
616
617
618
619
620
621
#docdir    := @docdir@
#htmldir   := @htmldir@
#dvidir    := @dvidir@
#pdfdir    := @pdfdir@
#psdir     := @psdir@

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

623
624
625
626
endif # Windows

headerdir := $(libdir)/include

627
628
# Default place for putting interface files is $(libdir)
# (overriden for packages in package.mk)
629
ifacedir		= $(libdir)
630

sof's avatar
sof committed
631
632
633
634
635
636
# 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)

Simon Marlow's avatar
Simon Marlow committed
637
638
639
640
641
# This is a bit of a lie, as this is a wrapper rather than the program
# itself. However, it means that we don't have to worry about Windows
# and non-Windows having different extensions.
GHC_PKG_PROG = $(FPTOOLS_TOP_ABS)/$(GHC_PKG_DIR_REL)/ghc-pkg-inplace

642
643
#-----------------------------------------------------------------------------
# install configuration
644

645
#
646
# Set this to have files installed with a specific owner
647
#
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
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
663
INSTALL_HEADER  = $(INSTALL) -m 644
Ian Lynagh's avatar
Ian Lynagh committed
664
INSTALL_MAN     = $(INSTALL) -m 644
665
666
INSTALL_DIR     = $(MKDIRHIER)

667
668
669
670
671
672
673
674
675
676
677
678
679
#
# 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.

680
681
# -----------------------------------------------------------------------------
# Utilities programs: flags 
682
683
684
685
686
687
688
689
690
691
692

# 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

693
SRC_HC_OPTS += -H32m -O
694

rrt's avatar
rrt committed
695
696
697
698
699
700
701
702
# These flags make flex 8-bit
SRC_FLEX_OPTS	+= -8

# 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.
703
SRC_BLD_DLL_OPTS += --target=i386-mingw32
rrt's avatar
rrt committed
704
705
706
707

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

708

709
################################################################################
710
#
711
#	Layout of the source tree
712
#
713
################################################################################
714

715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
# 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
Simon Marlow's avatar
Simon Marlow committed
738
GHC_GHCTAGS_DIR_REL	= $(GHC_UTILS_DIR_REL)/ghctags
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
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)
Simon Marlow's avatar
Simon Marlow committed
766
GHC_GHCTAGS_DIR		= $(FPTOOLS_TOP)/$(GHC_GHCTAGS_DIR_REL)
Ian Lynagh's avatar
Ian Lynagh committed
767
GHC_HSC2HS_DIR		= $(FPTOOLS_TOP_ABS)/$(GHC_HSC2HS_DIR_REL)
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
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)
Simon Marlow's avatar
Simon Marlow committed
794
GHC_GHCTAGS_DIR_ABS	= $(FPTOOLS_TOP_ABS)/$(GHC_GHCTAGS_DIR_REL)
795
796
797
798
799
800
801
802
803
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)
804

805
806
807
808
809
810
811
# -----------------------------------------------------------------------------
# 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
812
GHC_HP2PS_PGM		= hp2ps
813
GHC_HSTAGS_PGM		= hasktags
Simon Marlow's avatar
Simon Marlow committed
814
GHC_GHCTAGS_INPLACE_PGM	= ghctags-inplace
Ian Lynagh's avatar
Ian Lynagh committed
815
GHC_HSC2HS_INPLACE_PGM	= hsc2hs
816
817
818
819
GHC_TOUCHY_PGM		= touchy$(exeext)
GHC_MANGLER_PGM		= ghc-asm
GHC_SPLIT_PGM		= ghc-split
GHC_SYSMAN_PGM 		= SysMan
820
GHC_PKG_INPLACE_PGM	= ghc-pkg-inplace
821
822
823
824
825
826
827
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
828

829
830
831
832
833
834
835
ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
GHC_CP			= "xcopy /y"
GHC_PERL		= perl
else
GHC_CP			= $(CP)
GHC_PERL		= $(PERL)
endif
836

837
UNLIT			= $(GHC_UNLIT_DIR)/$(GHC_UNLIT_PGM)
ravi@bluespec.com's avatar
ravi@bluespec.com committed
838
HP2PS			= $(GHC_HP2PS_DIR)/$(GHC_HP2PS_PGM)
839
HSTAGS			= $(GHC_HSTAGS_DIR)/$(GHC_HSTAGS_PGM)
Simon Marlow's avatar
Simon Marlow committed
840
GHCTAGS_INPLACE		= $(GHC_GHCTAGS_DIR)/$(GHC_GHCTAGS_INPLACE_PGM)
Ian Lynagh's avatar
Ian Lynagh committed
841
HSC2HS_INPLACE		= $(GHC_HSC2HS_DIR)/install-inplace/bin/$(GHC_HSC2HS_INPLACE_PGM)
842
843
844
845
846
847
848
849
850
851
852
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)
853

854
GENERATED_FILE  = chmod a-w
Ian Lynagh's avatar
Ian Lynagh committed
855
EXECUTABLE_FILE = chmod +x
856

857
#-----------------------------------------------------------------------------
858
859
860
861
862
863
864
# 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).
865
866
867
#
# NOTE: Don't override $(GHC) in build.mk, use configure --with-ghc instead
# (because the version numbers have to be calculated).
868

869
GHC		= @WithGhc@
870
GhcDir          = $(dir $(GHC))
871

Ian Lynagh's avatar
Ian Lynagh committed
872
873
# Set to YES if $(GHC) has the editline package installed
GhcHasEditline	= @GhcHasEditline@
874

875
876
HBC		= @HBC@
NHC		= @NHC@
877

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

882
GHC_INPLACE 	= $(GHC_COMPILER_DIR)/ghc-inplace
883
884
885
886
GHC_STAGE1 	= $(GHC_COMPILER_DIR)/stage1/ghc-inplace -no-user-package-conf
GHC_STAGE2 	= $(GHC_COMPILER_DIR)/stage2/ghc-inplace -no-user-package-conf
GHC_STAGE3 	= $(GHC_COMPILER_DIR)/stage3/ghc-inplace -no-user-package-conf

Ian Lynagh's avatar
Ian Lynagh committed
887
888
BOOTSTRAPPING_CONF = $(FPTOOLS_TOP_ABS)/libraries/bootstrapping.conf

889
890
891
892
# NOTE: add -no-user-package-conf for stage 1-3 above, so that
# we avoid picking up any packages the user might happen to have
# installed for this GHC version.  They are bound to be incompatible
# with the packages we built in the tree.
893

894
895
896
ifeq "$(stage)" "2"
  UseStage1 = YES
endif
897
898
899
900
901
902
903
904
905
906
907
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@
908

Simon Marlow's avatar
Simon Marlow committed
909
ghc_ge_605 = YES
Simon Marlow's avatar
Simon Marlow committed
910
ghc_ge_607 = YES
Ian Lynagh's avatar
Ian Lynagh committed
911
ghc_ge_609 = YES
912
913
914
915
916

else # not UseStage1 or BootingFromHc

HC	        = @WithHc@
MKDEPENDHS	= $(GHC)
Ian Lynagh's avatar
Ian Lynagh committed
917
918
BOOTSTRAPPING_PACKAGE_CONF_HC_OPTS = -package-conf $(BOOTSTRAPPING_CONF)
BOOTSTRAPPING_PACKAGE_CONF_MKDEPENDHS_OPTS = -package-conf $(BOOTSTRAPPING_CONF)
919
920
921
922
923
924
GhcVersion	= @GhcVersion@
GhcPatchLevel	= @GhcPatchLevel@
GhcMajVersion	= @GhcMajVersion@
GhcMinVersion	= @GhcMinVersion@

# Some useful GHC version predicates:
925
ghc_ge_605 = @ghc_ge_605@
Simon Marlow's avatar
Simon Marlow committed
926
ghc_ge_607 = @ghc_ge_607@
Ian Lynagh's avatar
Ian Lynagh committed
927
ghc_ge_609 = @ghc_ge_609@
928
endif
929
930
931
932
933
934
935
936

# 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)
937
endif
938

939
940
941
#-----------------------------------------------------------------------------
# C compiler
#
942
943
944
945
# 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.

946
947
HaveGcc 	= @HaveGcc@
UseGcc  	= YES
sof's avatar
sof committed
948
WhatGccIsCalled = @WhatGccIsCalled@
949
GccVersion      = @GccVersion@
950
951
952
953
954
ifeq "$(strip $(HaveGcc))" "YES"
ifneq "$(strip $(UseGcc))"  "YES"
  CC	= cc
else
  CC	= $(WhatGccIsCalled)
955
  GccDir = $(dir $(WhatGccIsCalled))
956
957
958
endif
endif

959
# default C compiler flags
sof's avatar
sof committed
960
SRC_CC_OPTS = @SRC_CC_OPTS@
961

962
963
964
965
ifeq "$(TARGETPLATFORM)" "ia64-unknown-linux"
SRC_CC_OPTS += -G0
endif

Ian Lynagh's avatar
Ian Lynagh committed
966
967
968
969
SRC_HSC2HS_OPTS += $(addprefix --cflag=,$(filter-out -O,$(SRC_CC_OPTS)))
SRC_HSC2HS_OPTS += --cc=$(CC)
SRC_HSC2HS_OPTS += --ld=$(CC)
SRC_HSC2HS_OPTS += --cflag=-D__GLASGOW_HASKELL__=$(ProjectVersionInt)
970
SRC_HSC2HS_OPTS += --lflag=-no-auto-link-packages
Ian Lynagh's avatar
Ian Lynagh committed
971
972
973
974
975
976
977
978
979
980
981
SRC_HSC2HS_OPTS += -I$(GHC_INCLUDE_DIR_ABS)
SRC_HSC2HS_OPTS += -I$(FPTOOLS_TOP_ABS)/gmp/gmpbuild

# Given
#   foo bar
# make
#   :\"-Ifoo\":\"-Ibar\"
nothing=
space=$(nothing) $(nothing)
SRC_HSC2HS_OPTS += $(subst $(space),,$(foreach d,$(GMP_INCLUDE_DIRS),:\"-I$(d)\"))

982
#-----------------------------------------------------------------------------
983
# GMP Library (version 2.0.x or above)
984
985
#
HaveLibGmp	= @HaveLibGmp@
986
LibGmp		= @LibGmp@
987

988
989
990
GMP_INCLUDE_DIRS=@GMP_INCLUDE_DIRS@
GMP_LIB_DIRS=@GMP_LIB_DIRS@

991
#-----------------------------------------------------------------------------
992
# GMP framework (Mac OS X)
993
#
994
HaveFrameworkGMP = @HaveFrameworkGMP@
995

996
#-----------------------------------------------------------------------------
997
# Mingwex Library
998
#
999
HaveLibMingwEx	= @HaveLibMingwEx@
1000