config.mk.in 27.9 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 20 21 22
#	- Settings in this file may be overriden by giving replacement
#	  definitions in build.mk.  If you don't have a build.mk file
#	  then you get defaults for everything.  The defaults should
#	  provide a reasonable vanilla build.
23 24 25 26 27 28 29 30 31 32 33
#
# This is one of only two files that configure generates (the other is config.h)
#
# There is a section below for each project within the fptools suite
#
#	PLUS
#
# a section corresponding to each of the main .mk files 
# included by boilerplate.mk (see boilerplate.mk for a list).


34
################################################################################
sof's avatar
sof committed
35 36 37
#
#		Project-wide platform variables
#
38
################################################################################
sof's avatar
sof committed
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81

# A "platform" is the GNU cpu-type/manufacturer/operating-system target machine
# specifier.  E.g. sparc-sun-solaris2

HOSTPLATFORM			= @HostPlatform@
TARGETPLATFORM			= @TargetPlatform@
BUILDPLATFORM			= @HostPlatform@

# Hack alert:
# 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.
#
HostPlatform_CPP		= @HostPlatform_CPP@
HostArch_CPP			= @HostArch_CPP@
HostOS_CPP			= @HostOS_CPP@
HostOS_Full			= @HostOS_Full@
HostVendor_CPP	                = @HostVendor_CPP@

#
# ToDo: check if these can be purged now. -- sof
#

@HostPlatform_CPP@_HOST        = 1
@HostPlatform_CPP@_TARGET      = 1
@HostPlatform_CPP@_BUILD       = 1

@HostArch_CPP@_HOST_ARCH       = 1
@HostArch_CPP@_TARGET_ARCH	= 1
@HostArch_CPP@_BUILD_ARCH      = 1

@HostOS_CPP@_HOST_OS           = 1
@HostOS_CPP@_TARGET_OS         = 1
@HostOS_CPP@_BUILD_OS          = 1

@HostVendor_CPP@_HOST_VENDOR    = 1
@HostVendor_CPP@_TARGET_VENDOR  = 1
@HostVendor_CPP@_BUILD_VENDOR   = 1

# Leading underscores on symbol names in object files
# Valid options: YES/NO
#
LeadingUnderscore=@LeadingUnderscore@

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

85
################################################################################
86 87 88 89 90
#
#		project-wide flags
#
# 	Set of options applicable to all fptools projects
#
91
################################################################################
92

93 94 95
# BootingFromHc - build GHC and the libraries from .hc files?
BootingFromHc = @BootingFromHc@

ken's avatar
ken committed
96 97 98 99
# BootingFromUnregisterisedHc - treat .hc files as containing unregisterised
# rather than registerised code, i.e., disable the mangler?
BootingFromUnregisterisedHc = @BootingFromUnregisterisedHc@

100
# build the libs first if we're bootstrapping from .hc files
101
ifeq "$(BootingFromHc)" "YES"
102
AllProjects = glafp-utils libraries hslibs ghc green-card happy hdirect hood nofib
103
else
104
AllProjects = glafp-utils ghc libraries hslibs green-card happy hdirect hood nofib
105
endif
106 107 108 109 110 111 112

#
# (OPTIONAL) set ProjectsToBuild to a list of projects to be built.  If this
# list is empty, then all projects present in the source tree will be built.
#
ProjectsToBuild =

sof's avatar
sof committed
113
#
114 115
# set ProjectsDontInstall to a list of projects which are normally built but
# not installed.
sof's avatar
sof committed
116
#
117
ProjectsDontInstall = glafp-utils nofib
118 119 120 121 122 123

#
# Should the various project tests directories be built?
#
IncludeTestDirsInBuild=NO

rrt's avatar
rrt committed
124 125
#
# Which ways should SGML documents be built?
rrt's avatar
rrt committed
126
# options are: dvi ps pdf html rtf
rrt's avatar
rrt committed
127 128 129
#
SGMLDocWays=

130
################################################################################
131 132 133 134 135 136
#
#		GHC project
# 
# 	Set of (configurable) options needed by the ghc tree
#	plus their default options (if any).
#
137
################################################################################
138 139 140 141

#---------------------------------------------------------------
#
# Variables that control how the compiler itself is built
sof's avatar
sof committed
142 143
#
#---------------------------------------------------------------
144

145 146
# 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
147

148 149 150 151 152 153
# 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
# (Ones that are essential are wired into ghc/compiler/Makefile)
154
# Typical options to use here:
sof's avatar
sof committed
155
#
156 157 158
#	-DDEBUG		include debugging code and assertions (will make the
#			compiler slower and produce debugging output, but useful
#			for development)
sof's avatar
sof committed
159 160
#
#	-dcore-lint	check the types after every pass of the compiler;
161 162 163 164 165 166 167 168 169 170 171 172 173
#			a pretty strong internal check of the compiler being
#			used to compile GHC.  Useful when bootstrapping.
GhcHcOpts=-Rghc-timing

# Extra Haskell compiler options to use when compiling all Haskell
# *programs* (not libraries), including GHC itself.
# Typical options to use here:
#
#	-H25m		use a bigger heap (to speed up compilation)
#
#	-O		compile an optimised compiler
#
FptoolsHcOpts=-O
174

175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
# 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.
#
# NOTE: this is not the same as building the compiler itself
# unregisterised.  That's done by either (a) bootstrapping with a
# compiler that was built with GhcUnregisterized=YES, or (b)
# bootstrapping with a compiler that has way 'u' libraries, and the
# flag '-unreg' is added to GhcHcOpts above.
#
GhcUnregisterised=NO

193 194 195 196
# Build a compiler with a native code generator backend
# (as well as a C backend)
#
# Target platforms supported:
ken's avatar
ken committed
197 198
#   i386 & sparc
ifneq "$(findstring $(HostArch_CPP), i386 sparc)" ""
199 200 201 202
GhcWithNativeCodeGen=YES
else
GhcWithNativeCodeGen=NO
endif
203

204 205 206
# Include support for generating Java
GhcWithJavaGen=NO

207 208
HaveLibDL = @HaveLibDL@

209 210
# Include GHCi in the compiler.  Default to NO for the time being.

ken's avatar
ken committed
211
ifneq "$(findstring $(HostOS_CPP), mingw32 linux solaris2 freebsd netbsd openbsd)" ""
212
GhcWithInterpreter=YES
213 214 215
ifeq "$(HaveLibDL)" "YES"
SRC_HC_OPTS += -ldl
endif
216
else 
217
GhcWithInterpreter=NO
218
endif
219

sof's avatar
sof committed
220 221 222 223 224
#
# Building various ways?
# (right now, empty if not).
BuildingParallel=$(subst mp,YES,$(filter mp,$(WAYS)))
BuildingGranSim=$(subst mg,YES,$(filter mg,$(WAYS)))
225

226 227
#------------------------------------------------------------------------------
# Options for GHC's Prelude
228 229 230 231

# 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
232
# When booting from .hc files, turn this off.
233
ifeq "$(BootingFromHc)" "YES"
sof's avatar
sof committed
234
GhcLibWays=
sof's avatar
sof committed
235
else
236
GhcLibWays=p
sof's avatar
sof committed
237
endif
238

239 240 241 242
# 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
243 244 245 246
#
# 	-O is pretty desirable, otherwise no inlining of prelude
#		things (incl "+") happens when compiling with this compiler

247
GhcLibHcOpts=-O -Rghc-timing
rrt's avatar
rrt committed
248

249
# Win32 only: Enable the RTS and libraries to be built as DLLs
250
DLLized=@EnableWin32DLLs@
251

sof's avatar
sof committed
252 253 254 255 256 257 258
# Win32 only: are we building a compiler that tries to reduce external
# dependencies? i.e., one that doesn't assume that the user has got
# the cygwin toolchain installed on his/her Win32 box.
#
# GHC is still dependent on GNU tools in the backend (gcc to further process
# .c/.hc/.s/.o files + 'perl' to mangle and split), but using this
# option a GHC distribution can be put together which includes a minimal
sof's avatar
sof committed
259
# set of these open source tools. 
sof's avatar
sof committed
260 261 262
#
MinimalUnixDeps=@MinimalUnixDeps@

263 264 265 266
# Don't split object files for libs if we're building DLLs, or booting from
# .hc files.
SplitObjs=YES

267
ifeq "$(DLLized)" "YES"
rrt's avatar
rrt committed
268 269
SplitObjs=NO
endif
270 271 272
ifeq "$(BootingFromHc)" "YES"
SplitObjs=NO
endif
273 274 275
ifeq "$(GhcUnregisterised)" "YES"
SplitObjs=NO
endif
276 277 278 279 280 281 282 283 284

# 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

# ----------------------------------------------------------------------------
# Options for GHC's RTS

285
# This is a good way to set things like -optc-g and -optc-DDEBUG for the RTS.
286 287 288 289 290
# GhcRtsHcOpts is used when compiling .hc files and .c files.
# GhcRtsCcOpts is used when compiling .c  files only.

# For a debugging RTS:
# GhcRtsHcOpts = -optc-DDEBUG
291
# GhcRtsCcOpts = -g
292

293
# For an optimised RTS:
294
GhcRtsHcOpts=-O2
295
GhcRtsCcOpts=-fomit-frame-pointer
296

297 298 299
# Include the front panel code?  Needs GTK+.
GhcRtsWithFrontPanel = NO

sof's avatar
sof committed
300 301 302 303 304 305 306 307 308 309 310
#
# To have the RTS support interoperation with OS threads, set
# GhcRtsThreaded to YES (preferably via the --enable-threaded-rts
# configure script option). The consequence of this is spelled out
# in details elsewhere, but, briefly, Concurrent Haskell threads
# can now make external (i.e., C) calls without blocking the progress
# of other CH threads. Multiple native threads can also execute
# Haskell code without getting in each others way too.
# 
GhcRtsThreaded=@ThreadedRts@

311 312
################################################################################
#
313
# libraries project
314 315 316
#
################################################################################

317 318
# Build the Haskell Readline bindings?
#
319 320 321 322 323
GhcLibsWithReadline=@HaveReadlineHeaders@

# Libraries needed for linking with readline
LibsReadline=@LibsReadline@

324 325 326 327
# Include path to readline.h
# (no path == in standard include path)
#
ReadlineIncludePath=
328

sebc's avatar
sebc committed
329 330 331
# Math library
LIBM=@LIBM@

332 333 334
# Build the Haskell OpenGL/GLUT binding?
#
GhcLibsWithHOpenGL=@GhcLibsWithHOpenGL@
335 336
GL_CFLAGS=@GL_CFLAGS@
GL_LIBS=@GL_LIBS@
337

reid's avatar
reid committed
338 339 340
X_CFLAGS=@X_CFLAGS@
X_LIBS=@X_LIBS@

341
################################################################################
342 343 344 345 346
#
#		happy project
#
# 	Happy specific options
#
347
################################################################################
348

349
# The compiler you'd like to use to compile Happy
350
WithHappyHc = @WithHc@
351

sof's avatar
sof committed
352
# HappyHcOpts gives the flags to pass to the Haskell compiler used
sof's avatar
sof committed
353 354
# 	      to compile the Happy sources with.
#
355
HappyHcOpts = -O
356

357
################################################################################
358 359 360 361 362
#
#		haggis project
#
# 	Haggis specific options
#
363
################################################################################
364

365
################################################################################
366 367 368 369 370
#
#		green-card project
#
# 	Green-card specific options
#
371
################################################################################
372

373
################################################################################
374 375 376 377 378
#
#		nofib project
#
# 	nofib specific options
#
379
################################################################################
380

381
WithNofibHc = $(GHC_INPLACE)
382 383 384 385 386 387 388 389 390 391

# NoFibSubDirs controls which set of tests should be run
# You can run one or more of
#	imaginary 
#	spectral
#	real
#	parallel
#	PRIVATE
#	PENDING
#	UNUSED
392
NoFibSubDirs = imaginary spectral real
393 394 395 396

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

# Haskell compiler options for nofib
400
NoFibHcOpts = -O
401 402 403 404 405 406 407 408 409

# ==============================================================================
#
#			END OF PROJECT-SPECIFIC STUFF
#
#		Now come the generic configuration options
#
# ==============================================================================

410
################################################################################
411 412 413
#
#		Paths (see paths.mk)
#
414
################################################################################
415

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

421
# DEFAULT_TMPDIR isn't called TMPDIR because GNU make tends to
422 423 424
# 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.
425 426

DEFAULT_TMPDIR		= /tmp
rrt's avatar
rrt committed
427 428 429 430 431 432
ifeq "$(TARGETPLATFORM)" "i386-unknown-cygwin32"
DEFAULT_TMPDIR		= C:/TEMP
endif
ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
DEFAULT_TMPDIR		= C:/TEMP
endif
433

sof's avatar
sof committed
434 435 436 437
# 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@
438 439 440 441 442 443

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

444 445 446
prefix			= @prefix@
exec_prefix		= @exec_prefix@
bindir			= @bindir@
447
datadir0		= @datadir@
448

449 450 451
#sysconfdir		= @datadir@
#sharedstatedir		= @sharedstatedir@
#localstatedir		= @localstatedir@
rrt's avatar
rrt committed
452
ifneq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
453
libdir0			= @libdir@
rrt's avatar
rrt committed
454
else
455
libdir0                 = @prefix@
rrt's avatar
rrt committed
456
endif
457 458
includedir		= @includedir@
oldincludedir		= @oldincludedir@
459
mandir			= @mandir@
460 461

#UNUSED:infodir		= @infodir@
sof's avatar
sof committed
462 463
#UNUSED:srcdir          = @srcdir@

464 465 466 467
#
# override libdir and datadir to put project-specific stuff in
# a subdirectory with the version number included.
#
rrt's avatar
rrt committed
468
ifneq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
469 470 471 472 473
libdir     = $(if $(ProjectNameShort),$(libdir0)/$(ProjectNameShort)-$(ProjectVersion),$(libdir0))
datadir    = $(if $(ProjectNameShort),$(datadir0)/$(ProjectNameShort)-$(ProjectVersion),$(datadir0))
else
libdir	   = $(libdir0)
datadir    = $(datadir0)
rrt's avatar
rrt committed
474
endif
475

sof's avatar
sof committed
476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511
# 
# 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
512

513

514
################################################################################
515 516 517
#
#		Utilities programs: flags
#
518
################################################################################
519 520 521 522 523 524 525 526 527 528 529

# 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

rrt's avatar
rrt committed
530 531 532 533 534 535 536 537 538 539 540 541 542 543 544
# 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__

545

546
################################################################################
547 548 549
#
#		Utilities programs: where to find them
#
550
################################################################################
551 552 553 554 555 556 557 558 559 560 561 562 563 564 565

#-----------------------------------------------------------------------------
# FPtools Utility locations

# By default, the various utils needed to be build ghc and chums
# is set up to point to the utils/ directory. Define here the
# path prefix for the utilities. Notice that it's a prefix with
# a trailing slash, so that it can be concatenated directly on
# front of a program name; if it's not set then we just look
# along the shell's $(PATH)
#
# If instead you want to use installed or your own versions of these,
# override the various *_PREFIX in build.mk, i.e., having the following
# in build.mk:
#
566
#   MKDEPENDC_PREFIX=
567
#
568
# will force `make' to rummage around in your PATH to find `mkdependC' (not
569 570 571 572 573 574 575 576 577
# sure it would need it in the first place, but still).
#
GLAFP_UTILS  		= $(FPTOOLS_TOP)/glafp-utils

SCRIPT_PREFIX 		= $(GLAFP_UTILS)/scripts/
MKDEPENDC_PREFIX	= $(GLAFP_UTILS)/mkdependC/
LTX_PREFIX		= $(GLAFP_UTILS)/ltx/
RUNTEST_PREFIX		= $(GLAFP_UTILS)/runstdtest/
VERBATIM_PREFIX		= $(GLAFP_UTILS)/verbatim/
578
SGMLVERB_PREFIX		= $(GLAFP_UTILS)/sgmlverb/
579 580 581 582
ETAGS_PREFIX		= $(GLAFP_UTILS)/etags/
MSUB_PREFIX		= $(GLAFP_UTILS)/msub/
LNDIR_PREFIX		= $(GLAFP_UTILS)/lndir/
MKDIRHIER_PREFIX	= $(GLAFP_UTILS)/mkdirhier/
rrt's avatar
rrt committed
583
DOCBOOK_PREFIX		= $(GLAFP_UTILS)/docbook/
584 585 586 587

LITERATE_PREFIX    	= $(FPTOOLS_TOP)/literate/

HAPPY_PREFIX    	= $(FPTOOLS_TOP)/happy/src/
reid's avatar
reid committed
588
GREENCARD_PREFIX	= $(FPTOOLS_TOP)/green-card/src/
589 590 591 592

UNLIT_PREFIX    	= $(FPTOOLS_TOP)/ghc/utils/unlit/
HP2PS_PREFIX            = $(FPTOOLS_TOP)/ghc/utils/hp2ps/
HSTAGS_PREFIX           = $(FPTOOLS_TOP)/ghc/utils/hstags/
593
HSC2HS_PREFIX		= $(FPTOOLS_TOP)/ghc/utils/hsc2hs/
594 595

#-----------------------------------------------------------------------------
596 597 598 599 600 601 602
# 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).
603 604 605
#
# NOTE: Don't override $(GHC) in build.mk, use configure --with-ghc instead
# (because the version numbers have to be calculated).
606

607
GHC		= @WithGhc@
608 609 610 611
GhcVersion	= @GhcVersion@
GhcMajVersion	= @GhcMajVersion@
GhcMinVersion	= @GhcMinVersion@
GhcPatchLevel	= @GhcPatchLevel@
sof's avatar
sof committed
612
# Canonicalised ghc version number, used for easy (integer) version comparisons.
sof's avatar
sof committed
613
GhcCanonVersion = $(GhcMajVersion)$(GhcMinVersion)
614

615 616
HBC		= @HBC@
NHC		= @NHC@
617

618
HC	        = @WithHc@
619
MKDEPENDHS	= $(GHC)
620

621 622
# Sometimes we want to invoke ghc from the build tree in different
# projects (eg. it's handy to have a nofib & a ghc build in the same
rrt's avatar
rrt committed
623
# tree).  We can refer to "this ghc" as $(GHC_INPLACE):
624

625
GHC_INPLACE 	= $(FPTOOLS_TOP)/ghc/compiler/ghc-inplace
626

627 628 629
#-----------------------------------------------------------------------------
# C compiler
#
630 631 632 633
# 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.

634 635
HaveGcc 	= @HaveGcc@
UseGcc  	= YES
sof's avatar
sof committed
636
WhatGccIsCalled = @WhatGccIsCalled@
637 638 639 640 641 642 643 644
ifeq "$(strip $(HaveGcc))" "YES"
ifneq "$(strip $(UseGcc))"  "YES"
  CC	= cc
else
  CC	= $(WhatGccIsCalled)
endif
endif

645
# default C compiler flags
sof's avatar
sof committed
646
SRC_CC_OPTS = @SRC_CC_OPTS@
647

648
#-----------------------------------------------------------------------------
649
# GMP Library (version 2.0.x or above)
650 651
#
HaveLibGmp	= @HaveLibGmp@
652
LibGmp		= @LibGmp@
653 654

#-----------------------------------------------------------------------------
655
# Regex libraries
656 657
# (if present in libc use that one, otherwise use the one in the tree)
#
658 659
HavePosixRegex  = @HavePosixRegex@
HaveGNURegex	= @HaveGNURegex@
660

661 662 663 664 665 666
#-----------------------------------------------------------------------------
# GTK+

GTK_CONFIG		= @GTK_CONFIG@
GTK_VERSION		= @GTK_VERSION@

667
#-----------------------------------------------------------------------------
668 669 670
# Flex

FLEX			= @LEX@
sof's avatar
sof committed
671 672 673
# Don't bother with -lfl, we define our own yywrap()s anyway.
FLEX_LIB		= 
#WAS:FLEX_LIB		= @LEXLIB@
674 675 676 677 678

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

AR			= @ArCmd@
ken's avatar
ken committed
679
ArSupportsInput		= @ArSupportsInput@
680 681 682 683 684 685 686 687 688 689
# Yuckage: for ghc/utils/parallel -- todo: nuke this dependency!!
BASH                    = /usr/local/bin/bash
#
# Could be either gzip or compress
#
COMPRESS		= @CompressCmd@
COMPRESS_SUFFIX         = @CompressSuffix@

CONTEXT_DIFF		= @ContextDiffCmd@
CP			= cp
sof's avatar
sof committed
690
CPP			= @CPP@ @CPPFLAGS@
691
CTAGS 			= $(ETAGS)
692 693 694 695 696
#
# 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
697
FIND			= @FindCmd@
698
INSTALL			= @INSTALL@
sof's avatar
sof committed
699 700 701 702 703
#
# 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
704
INSTALL			:= $(subst .././install-sh,$(FPTOOLS_TOP_ABS)/install-sh,$(INSTALL))
705
LATEX			= latex
rrt's avatar
rrt committed
706 707
HEVEA			= hevea
HACHA			= hacha
708 709 710 711 712 713 714 715 716 717 718 719 720
LN_S			= @LN_S@
MANMACROS		= -man
MSMACROS 		= -ms
MV			= mv
NROFF			= nroff
PERL 			= @PerlCmd@
PIC			= pic
PREPROCESSCMD		= $(CC) -E
PRINTER			= lpr
RANLIB			= @RANLIB@
RM			= rm -f
SED			= @SedCmd@
SHELL			= /bin/sh
721 722 723 724 725 726 727

# 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			= @LdCmd@
LD_X			= @LdXFlag@

sof's avatar
sof committed
728 729 730 731 732 733 734 735 736 737 738 739 740 741
#
# 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
# long command lines is either encountered while doing `make boot' in ghc/compiler, 
# 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
742
# By default, REAL_SHELL is set equal to SHELL, which is not really a smart move
743
# as it is SHELL that will show up the bogosity in the first place, but setting
sof's avatar
sof committed
744 745 746 747 748 749 750
# 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)
751 752 753
SIZE			= size
STRIP			= strip
TAR			= @TarCmd@
sof's avatar
sof committed
754
ZIP			= zip
sof's avatar
sof committed
755 756

#
rrt's avatar
rrt committed
757
# Under Windows, we have to deal with .exe suffixes
sof's avatar
sof committed
758
#
rrt's avatar
rrt committed
759
EXE_SUFFIX=@exeext@
sof's avatar
sof committed
760

761 762 763 764 765 766 767 768 769 770 771 772 773 774 775
#
# 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
YACC			= @YaccCmd@

776
#-----------------------------------------------------------------------------
rrt's avatar
rrt committed
777
# SGML stuff
778

rrt's avatar
rrt committed
779 780
JADE			= @JadeCmd@

rrt's avatar
rrt committed
781 782 783 784 785
SGML2DVI		= $(DOCBOOK_PREFIX)db2dvi
SGML2HTML		= $(DOCBOOK_PREFIX)db2html
SGML2PS			= $(DOCBOOK_PREFIX)db2ps
SGML2PDF		= $(DOCBOOK_PREFIX)db2pdf
SGML2RTF		= $(DOCBOOK_PREFIX)db2rtf
786

rrt's avatar
rrt committed
787 788
SGMLSTYLESHEET          = $(FPTOOLS_TOP_ABS)/docs/fptools-both.dsl

789 790 791 792
SRC_SGML2DVI_OPTS       = -d $(SGMLSTYLESHEET)
SRC_SGML2HTML_OPTS      = -d $(SGMLSTYLESHEET)
SRC_SGML2PS_OPTS      	= -d $(SGMLSTYLESHEET)
SRC_SGML2RTF_OPTS       = -d $(SGMLSTYLESHEET)
sof's avatar
sof committed
793
SRC_SGML2PDF_OPTS       = -d $(SGMLSTYLESHEET)
rrt's avatar
rrt committed
794

795
DOCBOOK_CATALOG		= @Catalog@
chak's avatar
chak committed
796

797 798 799 800 801 802 803 804 805 806 807
#-----------------------------------------------------------------------------
# 		FPtools support software

# Stuff from fptools/glafp-utils
MKDEPENDC 		= $(MKDEPENDC_PREFIX)mkdependC
LTX 			= $(LTX_PREFIX)ltx
MKDIRHIER		= $(MKDIRHIER_PREFIX)mkdirhier
LNDIR			= $(LNDIR_PREFIX)lndir
MSUB			= $(MSUB_PREFIX)msub
ETAGS			= $(ETAGS_PREFIX)etags
VERBATIM		= $(VERBATIM_PREFIX)verbatim
808
SGMLVERB		= $(SGMLVERB_PREFIX)sgmlverb
809 810
RUNTEST			= $(RUNTEST_PREFIX)runstdtest
LX			= @LxCmd@
sof's avatar
sof committed
811
GREENCARD	        = $(FPTOOLS_TOP)/green-card/src/green-card
812

sof's avatar
sof committed
813 814
BLD_DLL			= dllwrap

rrt's avatar
rrt committed
815 816 817 818 819 820
#
# .NET support software
#
ILX2IL                  = ilx2il
ILASM                   = ilasm

821 822 823 824 825 826 827 828
#
# Happy
#
HAPPY			= @HappyCmd@
HAPPY_VERSION		= @HappyVersion@		
#
# Options to pass to Happy when we're going to compile the output with GHC
#
sof's avatar
sof committed
829
GHC_HAPPY_OPTS		= @HappyOpts@
830

831 832 833 834 835 836 837 838 839 840 841 842 843
#
# Stuff from fptools/literate
#
LIT2PGM 		= $(LITERATE_PREFIX)lit2pgm
LIT2HTML      		= $(LITERATE_PREFIX)lit2html
LIT2LATEX     		= $(LITERATE_PREFIX)lit2latex
MKDEPENDLIT   		= $(LITERATE_PREFIX)mkdependlit
LIT2CHANGELOG 		= $(LITERATE_PREFIX)lit2changelog
LIT2TEXT 		= $(LITERATE_PREFIX)lit2text

#
# Stuff from fptools/ghc/utils
#
rrt's avatar
rrt committed
844 845
UNLIT	 		= $(UNLIT_PREFIX)unlit$(EXE_SUFFIX)
HP2PS			= $(HP2PS_PREFIX)hp2ps$(EXE_SUFFIX)
846
HSTAGS			= $(HSTAGS_PREFIX)hstags
847
HSC2HS			= $(HSC2HS_PREFIX)hsc2hs-inplace
848 849 850 851 852

#
# Options for the compiling different `ways'. Various projects within
# the glorious fptools tree support building in various user-configured
# ways. For instance, you could set up one `way' such that the prelude
853
# libraries all were built with the option -ffoldr-build-on.
854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884
# 
# 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.
#

#
# IMPORTANT! The WAYS variable configures the different `ways'
# you want to build a project (or maybe just parts of it, as is
# the case for ghc/). This variable is intended set inside the
# project mk setup, enforcing a global fptools WAYS is a bit too
# much (do you *really* want to build glafp-utils the profiled-concurrent 
# way?)
#

#
# 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.
#
885
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
886
USER_WAYS=a b c d e f g h j k l m n o A B
887 888

#
889
# The following ways currently have treated specially, p u t mg,
890 891 892 893 894
# 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
# for these in the ghc/driver, as this is the only place they are needed.
# 
# If you want to add to these default options, fill in the variables below:
895

rrt's avatar
rrt committed
896 897
# Way 'i':
WAY_i_NAME=ILX
rrt's avatar
rrt committed
898
WAY_i_HC_OPTS= -filx -fruntime-types
rrt's avatar
rrt committed
899

900
# Way 'p':
901 902 903
WAY_p_NAME=profiling
WAY_p_HC_OPTS= -prof

904
# Way 't':
905 906 907 908 909
WAY_t_NAME=ticky-ticky profiling
WAY_t_HC_OPTS= -ticky

# Way `u':
WAY_u_NAME=unregisterized (using portable C only)
910
WAY_u_HC_OPTS=-unreg
911

912 913 914 915
# Way `s':
WAY_s_NAME=threads (for SMP)
WAY_s_HC_OPTS=-smp

916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973
# Way `mp': 
WAY_mp_NAME=parallel
WAY_mp_HC_OPTS=-parallel

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

#
# 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
974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993

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