GhcEnableTablesNextToCode=YES
endif
+# 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
+
+# When building bindists we set this to yes so that the binaries are as
+# portable as possible.
+BeConservative = NO
+
#
# Building various ways?
# (right now, empty if not).
# thr_p : threaded profiled
# debug : debugging (compile with -g for the C compiler, and -DDEBUG)
# debug_p : debugging profiled
-# debug_u : debugging unregisterised
# thr_debug : debugging threaded
# thr_debug_p : debugging threaded profiled
# t : ticky-ticky profiling
# These are the URL patterns that Haddock uses to generate the "Source
# File" links on each page.
-CorePackageSourceURL = http://darcs.haskell.org/ghc-6.6/packages/$(PACKAGE)/%{FILE}
-ExtraPackageSourceURL = http://darcs.haskell.org/packages/$(PACKAGE)/%{FILE}
-
-# These are the packages required to be present in order to bootstrap GHC
-# NB. must be synced with libraries/core-packages
-CorePackages = base Cabal haskell98 readline regex-base regex-compat \
- regex-posix parsec stm template-haskell unix Win32
+PackageSourceURL = http://darcs.haskell.org/packages/$(PACKAGE)/%{FILE}
# ----------------------------------------------------------------------------
# Object-file splitting
# On Windows this is a c:/foo/bar style path.
FPTOOLS_TOP_ABS = @hardtop@
-# This gets used in the default docdir
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-
BIN_DIST_NAME=ghc-$(ProjectVersion)
BIN_DIST_TOPDIR_REL=$(FPTOOLS_TOP)
BIN_DIST_TOPDIR_ABS=$(FPTOOLS_TOP_ABS)
BIN_DIST_DIR=$(BIN_DIST_TOPDIR_ABS)/$(BIN_DIST_NAME)
BIN_DIST_TARBALL=$(BIN_DIST_TOPDIR_REL)/$(BIN_DIST_NAME)-$(TARGETPLATFORM).tar.bz2
-BIN_DIST_INST_DIR = $(FPTOOLS_TOP_ABS)/bindisttest/installed
-
-
-#
-# 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.
+# 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.
+
+# This gets used in the default docdir when autoconf >= 2.60 is used
+PACKAGE_TARNAME := @PACKAGE_TARNAME@
prefix := @prefix@
datadir0 := @datadir@
libdir0 := @libdir@
includedir := @includedir@
-oldincludedir := @oldincludedir@
mandir := @mandir@
-ifeq "$(Windows)" "YES"
-
-ifeq "$(strip $(prefix))" ""
-prefix = /c/ghc
-endif
+ifeq "$(RelocatableBuild)" "YES"
# Hack: our directory layouts tend to be different on Windows, so
# hack around configure's bogus assumptions here.
datadir := $(prefix)
libdir := $(prefix)
+docdir := $(prefix)/doc
+htmldir := $(docdir)
+dvidir := $(docdir)
+pdfdir := $(docdir)
+psdir := $(docdir)
+
else
-#
# Unix: override libdir and datadir to put ghc-specific stuff in
# a subdirectory with the version number included.
-#
datarootdir := $(datadir0)
datadir := $(datadir0)/ghc-$(ProjectVersion)
libdir := $(libdir0)/ghc-$(ProjectVersion)
-endif # Windows
-
-headerdir := $(libdir)/include
-
# 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.
pdfdir := $(docdir)
psdir := $(docdir)
+endif # Windows
+
+headerdir := $(libdir)/include
+
# 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
-
# 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.
INSTALL_MAN = $(INSTALL) -m 644
INSTALL_DIR = $(MKDIRHIER)
+#
+# 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.
+
# -----------------------------------------------------------------------------
# Utilities programs: flags
GHC_UNLIT_DIR_REL = $(GHC_UTILS_DIR_REL)/unlit
GHC_HP2PS_DIR_REL = $(GHC_UTILS_DIR_REL)/hp2ps
GHC_HSTAGS_DIR_REL = $(GHC_UTILS_DIR_REL)/hasktags
+GHC_GHCTAGS_DIR_REL = $(GHC_UTILS_DIR_REL)/ghctags
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_UNLIT_DIR = $(FPTOOLS_TOP)/$(GHC_UNLIT_DIR_REL)
GHC_HP2PS_DIR = $(FPTOOLS_TOP)/$(GHC_HP2PS_DIR_REL)
GHC_HSTAGS_DIR = $(FPTOOLS_TOP)/$(GHC_HSTAGS_DIR_REL)
+GHC_GHCTAGS_DIR = $(FPTOOLS_TOP)/$(GHC_GHCTAGS_DIR_REL)
GHC_HSC2HS_DIR = $(FPTOOLS_TOP)/$(GHC_HSC2HS_DIR_REL)
GHC_TOUCHY_DIR = $(FPTOOLS_TOP)/$(GHC_TOUCHY_DIR_REL)
GHC_PKG_DIR = $(FPTOOLS_TOP)/$(GHC_PKG_DIR_REL)
GHC_UNLIT_DIR = $(FPTOOLS_TOP_ABS)/$(GHC_UNLIT_DIR_REL)
GHC_HP2PS_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_HP2PS_DIR_REL)
GHC_HSTAGS_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_HSTAGS_DIR_REL)
+GHC_GHCTAGS_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_GHCTAGS_DIR_REL)
GHC_HSC2HS_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_HSC2HS_DIR_REL)
GHC_TOUCHY_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_TOUCHY_DIR_REL)
GHC_PKG_DIR_ABS = $(FPTOOLS_TOP_ABS)/$(GHC_PKG_DIR_REL)
GHC_UNLIT_PGM = unlit$(exeext)
GHC_HP2PS_PGM = hp2ps
GHC_HSTAGS_PGM = hasktags
+GHC_GHCTAGS_INPLACE_PGM = ghctags-inplace
GHC_HSC2HS_INPLACE_PGM = hsc2hs-inplace
GHC_TOUCHY_PGM = touchy$(exeext)
GHC_MANGLER_PGM = ghc-asm
UNLIT = $(GHC_UNLIT_DIR)/$(GHC_UNLIT_PGM)
HP2PS = $(GHC_HP2PS_DIR)/$(GHC_HP2PS_PGM)
HSTAGS = $(GHC_HSTAGS_DIR)/$(GHC_HSTAGS_PGM)
+GHCTAGS_INPLACE = $(GHC_GHCTAGS_DIR)/$(GHC_GHCTAGS_INPLACE_PGM)
HSC2HS_INPLACE = $(GHC_HSC2HS_DIR)/$(GHC_HSC2HS_INPLACE_PGM)
MANGLER = $(GHC_MANGLER_DIR)/$(GHC_MANGLER_PGM)
SPLIT = $(GHC_SPLIT_DIR)/$(GHC_SPLIT_PGM)
TAR = @TarCmd@
ZIP = zip
+HSCOLOUR = @HSCOLOUR@
+
#
# This is special to literate/, ToDo: add literate-specific
# configure setup to literate/.
#
# 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
+ALL_WAYS=p t 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,
+# The following ways currently have treated specially, p 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 driver, as this is the only place they are needed.
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 `mp':
WAY_mp_NAME=parallel
WAY_mp_HC_OPTS=-parallel
WAY_debug_p_NAME=debug profiled
WAY_debug_p_HC_OPTS=-optc-DDEBUG -prof
-# Way 'debug_u':
-WAY_debug_u_NAME=debug unregisterised
-WAY_debug_u_HC_OPTS=-optc-DDEBUG -unreg
-
# Way 'debug_t':
WAY_debug_t_NAME=debug ticky-ticky profiling
WAY_debug_t_HC_OPTS= -ticky -optc-DDEBUG