#								 -*-makefile-*-
# @configure_input@
#
################################################################################
#
# config.mk.in
#
# This file supplies defaults for many tweakable build configuration
# options.  Some of the defaults are filled in by the autoconf-generated
# configure script.
#
# DO NOT EDIT THIS FILE!
#
# 	- 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.
#
#	- Settings in this file may be overriden by giving replacement
#	  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.
#
# 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).


################################################################################
#
#		Project-wide platform variables
#
################################################################################

# A "platform" is the GNU cpu-type/manufacturer/operating-system target machine
# specifier.  E.g. sparc-sun-solaris2
#
# 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.
#
# 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
#    the platform on which the compiler is running.  For stage 2,
#    HOSTPLATFORM should be reset to be TARGETPLATFORM (we currently
#    don't do this, but we should).
#
#  - In the RTS and library code, we should be testing TARGET only.
#
# 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.

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

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

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@

@HostPlatform_CPP@_HOST           = 1
@TargetPlatform_CPP@_TARGET       = 1
@BuildPlatform_CPP@_BUILD         = 1

@HostArch_CPP@_HOST_ARCH          = 1
@TargetArch_CPP@_TARGET_ARCH      = 1
@BuildArch_CPP@_BUILD_ARCH        = 1

@HostOS_CPP@_HOST_OS              = 1
@TargetOS_CPP@_TARGET_OS          = 1
@BuildOS_CPP@_BUILD_OS            = 1

@HostVendor_CPP@_HOST_VENDOR      = 1
@TargetVendor_CPP@_TARGET_VENDOR  = 1
@BuildVendor_CPP@_BUILD_VENDOR    = 1

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

# Pin a suffix on executables? If so, what (Windows only).
exeext=@exeext@

################################################################################
#
#		project-wide flags
#
# 	Set of options applicable to all fptools projects
#
################################################################################

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

# BootingFromUnregisterisedHc - treat .hc files as containing unregisterised
# rather than registerised code, i.e., disable the mangler?
BootingFromUnregisterisedHc = @BootingFromUnregisterisedHc@

# Build Order: we build Happy, Haddock and Alex before GHC if they are
# in this source tree, just in case our GHC build depends on these
# local builds rather than installed versions of the tools.
#
# Build the libs first if we're bootstrapping from .hc files.
ifeq "$(BootingFromHc)" "YES"
AllProjects = glafp-utils happy alex haddock libraries hslibs ghc greencard hdirect hood nofib docs
else
AllProjects = glafp-utils happy alex haddock ghc libraries hslibs greencard hdirect hood nofib docs
endif

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

#
# set ProjectsDontInstall to a list of projects which are normally built but
# not installed.
#
ProjectsDontInstall = glafp-utils nofib

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

#
# Should the various project example directories be built?
#
IncludeExampleDirsInBuild=NO

#
# Which ways should SGML documents be built?
# options are: dvi ps pdf html rtf
#
SGMLDocWays=

################################################################################
#
#		GHC project
# 
# 	Set of (configurable) options needed by the ghc tree
#	plus their default options (if any).
#
################################################################################

#---------------------------------------------------------------
#
# Variables that control how the compiler itself is built
#
#---------------------------------------------------------------

# The compiler used to build GHC is $(GHC).  To change the actual compiler
# used, re-configure with --with-ghc=<path-to-ghc>.

# 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)
# Typical options to use here:
#
#	-DDEBUG		include debugging code and assertions (will make the
#			compiler slower and produce debugging output, but useful
#			for development)
#
#	-dcore-lint	check the types after every pass of the compiler;
#			a pretty strong internal check of the compiler being
#			used to compile GHC.  Useful when bootstrapping.
GhcHcOpts=-Rghc-timing

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

# 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: 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.
#
GhcUnregisterised=NO

# Build a compiler with a native code generator backend
# (as well as a C backend)
#
# Target platforms supported:
#   i386, sparc & powerpc
ifneq "$(findstring $(HostArch_CPP), i386 sparc powerpc)" ""
GhcWithNativeCodeGen=YES
else
GhcWithNativeCodeGen=NO
endif

# Include support for generating Java
GhcWithJavaGen=NO

HaveLibDL = @HaveLibDL@
HaveRtldNext = @HaveRtldNext@
HaveRtldLocal = @HaveRtldLocal@

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

ifneq "$(findstring $(HostOS_CPP), mingw32 cygwin32 linux solaris2 freebsd netbsd openbsd darwin)" ""
GhcWithInterpreter=YES
else 
GhcWithInterpreter=NO
endif

#
# Building various ways?
# (right now, empty if not).
BuildingParallel=$(subst mp,YES,$(filter mp,$(WAYS)))
BuildingGranSim=$(subst mg,YES,$(filter mg,$(WAYS)))

#------------------------------------------------------------------------------
# Options for Libraries

# What extra ways to build the libraries in
# In addition to the normal sequential way, the default is to also build
# profiled prelude libraries.
# When booting from .hc files, turn this off.
ifeq "$(BootingFromHc)" "YES"
GhcLibWays=
else
GhcLibWays=p
endif

# 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
#   thr_debug   : debugging threaded
#   thr_debug_p : debugging threaded profiled
#
ifeq "$(BootingFromHc)" "YES"
GhcRTSWays=
else
GhcRTSWays=thr thr_p debug
endif

# 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.
#
# 	-O is pretty desirable, otherwise no inlining of prelude
#		things (incl "+") happens when compiling with this compiler

GhcLibHcOpts=-O -Rghc-timing

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

# 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
# set of these open source tools. 
#
MinimalUnixDeps=@MinimalUnixDeps@

# 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


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

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

ifeq "$(DLLized)" "YES"
SplitObjs=NO
endif
ifeq "$(BootingFromHc)" "YES"
SplitObjs=NO
endif
ifeq "$(GhcUnregisterised)" "YES"
SplitObjs=NO
endif
ifeq "$(TARGETPLATFORM)" "ia64-unknown-linux"
SplitObjs=NO
endif

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

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

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

################################################################################
#
# libraries project
#
################################################################################

# Build the Haskell Readline bindings?
#
GhcLibsWithReadline=@GhcLibsWithReadline@

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

# Include path to readline.h
# (no path == in standard include path)
#
ReadlineIncludePath=

# Math library
LIBM=@LIBM@

# Build the ObjectIO ?
#
GhcLibsWithObjectIO=@GhcLibsWithObjectIO@

# Build the Haskell OpenGL binding?
#
GhcLibsWithOpenGL=@GhcLibsWithOpenGL@
GLU_CFLAGS=@GLU_CFLAGS@
GLU_LIBS=@GLU_LIBS@

# Build the Haskell OpenAL binding?
#
GhcLibsWithOpenAL=@GhcLibsWithOpenAL@

# Build the Haskell GLUT binding?
#
GhcLibsWithGLUT=@GhcLibsWithGLUT@
GLUT_LIBS=@GLUT_LIBS@

# X11 stuff
#
GhcLibsWithX11=@GhcLibsWithX11@
X_CFLAGS=@X_CFLAGS@
X_LIBS=@X_LIBS@

# .NET interop support?
#
DotnetSupport=@DotnetSupport@

# Build unix package?
#
GhcLibsWithUnix=@GhcLibsWithUnix@

################################################################################
#
#		happy project
#
# 	Happy specific options
#
################################################################################

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

# HappyHcOpts gives the flags to pass to the Haskell compiler used
# 	      to compile the Happy sources with.
#
HappyHcOpts = -O

################################################################################
#
#		haggis project
#
# 	Haggis specific options
#
################################################################################

################################################################################
#
#		greencard project
#
# 	GreenCard specific options
#
################################################################################

################################################################################
#
#		nofib project
#
# 	nofib specific options
#
################################################################################

WithNofibHc = $(GHC_INPLACE)

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

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

# Haskell compiler options for nofib
NoFibHcOpts = -O

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

################################################################################
#
#		Paths (see paths.mk)
#
################################################################################

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

# DEFAULT_TMPDIR isn't called TMPDIR because GNU make tends to
# 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.

DEFAULT_TMPDIR		= /tmp
ifeq "$(TARGETPLATFORM)" "i386-unknown-cygwin32"
DEFAULT_TMPDIR		= C:/TEMP
endif
ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
DEFAULT_TMPDIR		= C:/TEMP
endif

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

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

ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32"

prefix			= @prefix@
exec_prefix		= @exec_prefix@
bindir			= @bindir@
datadir0		= @datadir@
libdir0			= @libdir@
includedir		= @includedir@
oldincludedir		= @oldincludedir@
mandir			= @mandir@

ifeq "$(strip $(prefix))" ""
prefix		= c:/ghc
endif

ifacedir   = $(libdir)

ifeq "$(strip $(exec_prefix))" ""
exec_prefix		= $(prefix)
endif
ifeq "$(strip $(bindir))" ""
bindir			= $(exec_prefix)/bin
endif

libexecdir		= $(libdir)

ifeq "$(strip $(datadir))" ""
datadir		= $(prefix)/imports
endif
ifeq "$(strip $(libdir))" ""
libdir		= $(prefix)
endif
ifeq "$(strip $(includedir))" ""
includedir	= $(prefix)/include
endif

else

prefix			= @prefix@
exec_prefix		= @exec_prefix@
bindir			= @bindir@
datadir0		= @datadir@
libdir0			= @libdir@
includedir		= @includedir@
oldincludedir		= @oldincludedir@
mandir			= @mandir@

#
# override libdir and datadir to put project-specific stuff in
# a subdirectory with the version number included.
#
libdir     = $(if $(ProjectNameShort),$(libdir0)/$(ProjectNameShort)-$(ProjectVersion),$(libdir0))
datadir    = $(if $(ProjectNameShort),$(datadir0)/$(ProjectNameShort)-$(ProjectVersion),$(datadir0))

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

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

endif  # i386-unknown-mingw32


################################################################################
#
#		Utilities programs: flags
#
################################################################################

# 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

SRC_HC_OPTS += -H16m -O

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


################################################################################
#
#		Utilities programs: where to find them
#
################################################################################

#-----------------------------------------------------------------------------
# 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:
#
#   MKDEPENDC_PREFIX=
#
# will force `make' to rummage around in your PATH to find `mkdependC' (not
# 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/
SGMLVERB_PREFIX		= $(GLAFP_UTILS)/sgmlverb/
ETAGS_PREFIX		= $(GLAFP_UTILS)/etags/
LNDIR_PREFIX		= $(GLAFP_UTILS)/lndir/
MKDIRHIER_PREFIX	= $(GLAFP_UTILS)/mkdirhier/
DOCBOOK_PREFIX		= $(GLAFP_UTILS)/docbook/

HADDOCK_PREFIX		= $(FPTOOLS_TOP)/haddock/

LITERATE_PREFIX    	= $(FPTOOLS_TOP)/literate/

UNLIT_PREFIX    	= $(FPTOOLS_TOP)/ghc/utils/unlit/
HP2PS_PREFIX            = $(FPTOOLS_TOP)/ghc/utils/hp2ps/
HSTAGS_PREFIX           = $(FPTOOLS_TOP)/ghc/utils/hasktags/
HSC2HS_PREFIX		= $(FPTOOLS_TOP)/ghc/utils/hsc2hs/

#-----------------------------------------------------------------------------
# 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).
#
# NOTE: Don't override $(GHC) in build.mk, use configure --with-ghc instead
# (because the version numbers have to be calculated).

GHC		= @WithGhc@
GhcDir          = $(dir $(GHC))
GhcVersion	= @GhcVersion@
GhcMajVersion	= @GhcMajVersion@
GhcMinVersion	= @GhcMinVersion@
GhcPatchLevel	= @GhcPatchLevel@

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

HBC		= @HBC@
NHC		= @NHC@

HC	        = @WithHc@
MKDEPENDHS	= $(GHC)

# 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
# tree).  We can refer to "this ghc" as $(GHC_INPLACE):

GHC_INPLACE 	= $(FPTOOLS_TOP)/ghc/compiler/ghc-inplace
GHC_STAGE1 	= $(FPTOOLS_TOP)/ghc/compiler/stage1/ghc-inplace
GHC_STAGE2 	= $(FPTOOLS_TOP)/ghc/compiler/stage2/ghc-inplace
GHC_STAGE3 	= $(FPTOOLS_TOP)/ghc/compiler/stage3/ghc-inplace

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

HaveGcc 	= @HaveGcc@
UseGcc  	= YES
WhatGccIsCalled = @WhatGccIsCalled@
GccVersion      = @GccVersion@
ifeq "$(strip $(HaveGcc))" "YES"
ifneq "$(strip $(UseGcc))"  "YES"
  CC	= cc
else
  CC	= $(WhatGccIsCalled)
  GccDir = $(dir $(WhatGccIsCalled))
endif
endif

# default C compiler flags
SRC_CC_OPTS = @SRC_CC_OPTS@

ifeq "$(TARGETPLATFORM)" "ia64-unknown-linux"
SRC_CC_OPTS += -G0
endif

# Solaris2 strikes again.
unix_SRC_HSC2HS_OPTS += @unix_SRC_HSC2HS_OPTS@

#-----------------------------------------------------------------------------
# GMP Library (version 2.0.x or above)
#
HaveLibGmp	= @HaveLibGmp@
LibGmp		= @LibGmp@

#-----------------------------------------------------------------------------
# Mingwex Library
#
HaveLibMingwEx	= @HaveLibMingwEx@

#-----------------------------------------------------------------------------
# HaskellSupport framework (Mac OS X)
#
HaveFrameworkHaskellSupport = @HaveFrameworkHaskellSupport@

#-----------------------------------------------------------------------------
# Regex library
# (if present in libc use that one, otherwise use the one in the tree)
#
HavePosixRegex  = @HavePosixRegex@

#-----------------------------------------------------------------------------
# GTK+

GTK_CONFIG		= @GTK_CONFIG@

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

# FLEX			= @LEX@
# Don't bother with -lfl, we define our own yywrap()s anyway.
# FLEX_LIB		= 
#WAS:FLEX_LIB		= @LEXLIB@

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

AR			= @ArCmd@
ArSupportsInput		= @ArSupportsInput@
# Yuckage: for ghc/utils/parallel -- todo: nuke this dependency!!
BASH                    = /usr/local/bin/bash

CONTEXT_DIFF		= @ContextDiffCmd@
CP			= cp
CPP			= @CPP@ @CPPFLAGS@
CTAGS 			= $(ETAGS)
#
# 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
FIND			= @FindCmd@
INSTALL			= @INSTALL@
#
# 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.
# 
INSTALL			:= $(subst .././install-sh,$(FPTOOLS_TOP_ABS)/install-sh,$(INSTALL))
LATEX			= latex
HEVEA			= hevea
HACHA			= hacha
LN_S			= @LN_S@
MANMACROS		= -man
MSMACROS 		= -ms
MV			= mv
NROFF			= nroff
PERL 			= @PerlCmd@
PYTHON			= @PythonCmd@
PIC			= pic
PREPROCESSCMD		= $(CC) -E
RANLIB			= @RANLIB@
RM			= rm -f
SED			= @SedCmd@
SHELL			= /bin/sh

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

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

# By default, REAL_SHELL is set equal to SHELL, which is not really a smart move
# as it is SHELL that will show up the bogosity in the first place, but setting
# 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)
SIZE			= size
STRIP			= strip
TAR			= @TarCmd@
ZIP			= zip

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

#-----------------------------------------------------------------------------
# SGML stuff

JADE			= @JadeCmd@

SGML2DVI		= $(DOCBOOK_PREFIX)db2dvi
SGML2HTML		= $(DOCBOOK_PREFIX)db2html
SGML2PS			= $(DOCBOOK_PREFIX)db2ps
SGML2PDF		= $(DOCBOOK_PREFIX)db2pdf
SGML2RTF		= $(DOCBOOK_PREFIX)db2rtf

SGMLSTYLESHEET          = $(FPTOOLS_TOP_ABS)/docs/fptools-both.dsl

SRC_SGML2DVI_OPTS       = -d $(SGMLSTYLESHEET)
SRC_SGML2HTML_OPTS      = -d $(SGMLSTYLESHEET)
SRC_SGML2PS_OPTS      	= -d $(SGMLSTYLESHEET)
SRC_SGML2RTF_OPTS       = -d $(SGMLSTYLESHEET)
SRC_SGML2PDF_OPTS       = -d $(SGMLSTYLESHEET)

DOCBOOK_CATALOG		= @Catalog@

#-----------------------------------------------------------------------------
# 		FPtools support software

# Stuff from fptools/glafp-utils
MKDEPENDC 		= $(MKDEPENDC_PREFIX)mkdependC
LTX 			= $(LTX_PREFIX)ltx
MKDIRHIER		= $(MKDIRHIER_PREFIX)mkdirhier
LNDIR			= $(LNDIR_PREFIX)lndir
ETAGS			= $(ETAGS_PREFIX)etags
VERBATIM		= $(VERBATIM_PREFIX)verbatim
SGMLVERB		= $(SGMLVERB_PREFIX)sgmlverb
RUNTEST			= $(RUNTEST_PREFIX)runstdtest
LX			= @LxCmd@

BLD_DLL			= dllwrap

#
# .NET support software
#
ILX2IL                  = ilx2il
ILASM                   = ilasm

#
# ghc-pkg
#
GHC_PKG		        = @GhcPkgCmd@

#
# GreenCard
#
GREENCARD	        = @GreenCardCmd@
GREENCARD_VERSION	= @GreenCardVersion@		

#
# Happy
#
HAPPY			= @HappyCmd@
HAPPY_VERSION		= @HappyVersion@		
#
# Options to pass to Happy when we're going to compile the output with GHC
#
GHC_HAPPY_OPTS		= -agc

# 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

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

#
# Haddock
# 
HADDOCK			= @HaddockCmd@
HADDOCK_INPLACE		= $(HADDOCK_PREFIX)/src/haddock-inplace

#
# 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
#
UNLIT	 		= $(UNLIT_PREFIX)unlit$(exeext)
HP2PS			= $(HP2PS_PREFIX)hp2ps$(exeext)
HSTAGS			= $(HSTAGS_PREFIX)hasktags
HSC2HS			= $(HSC2HS_PREFIX)hsc2hs-inplace

#
# 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
# libraries all were built with the option -ffoldr-build-on.
# 
# 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.
#
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
USER_WAYS=a b c d e f g h j k l m n o A B

#
# The following ways currently have treated specially, p u t mg,
# 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:

# Way 'i':
WAY_i_NAME=ILX
WAY_i_HC_OPTS= -filx -fruntime-types

# Way 'p':
WAY_p_NAME=profiling
WAY_p_HC_OPTS= -prof

# Way 't':
WAY_t_NAME=ticky-ticky profiling
WAY_t_HC_OPTS= -ticky

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

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

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

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

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

# 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

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

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

