#
XMLDocWays=
+# Should we build haddock docs?
+HADDOCK_DOCS = YES
+# And HsColour the sources?
+HSCOLOUR_SRCS = YES
+
+# Should we build latex docs?
+LATEX_DOCS = NO
+
# Mac OS X deployment target (to cross-compile for older OS versions)
#
MACOSX_DEPLOYMENT_VERSION = @MACOSX_DEPLOYMENT_VERSION@
GhcProfiled=NO
GhcDebugged=NO
+GhcLibProfiled=$(if $(filter p,$(GhcLibWays)),YES,NO)
+
+# Build shared and/or static libs?
+BuildSharedLibs=@BuildSharedLibs@
+# ToDo later:
+# BuildStaticLibs=@BuildStaticLibs@
# Build a compiler that will build *unregisterised* libraries and
# binaries by default. Unregisterised code is supposed to compile and
#
# Target platforms supported:
# i386, powerpc
-# sparc has bitrotted
# AIX is not supported
-ArchSupportsNCG=$(strip $(patsubst $(HostArch_CPP), YES, $(findstring $(HostArch_CPP), i386 x86_64 powerpc)))
+ArchSupportsNCG=$(strip $(patsubst $(HostArch_CPP), YES, $(findstring $(HostArch_CPP), i386 x86_64 powerpc sparc)))
OsSupportsNCG=$(strip $(patsubst $(HostOS_CPP), YES, $(patsubst aix,,$(HostOS_CPP))))
# lazy test, because $(GhcUnregisterised) might be set in build.mk later.
GhcLibWays=p
endif
+ifeq "$(BuildSharedLibs)" "YES"
+GhcLibWays += dyn
+endif
+
# In addition, the RTS is built in some further variations. Ways that
# make sense here:
#
GhcRTSWays += debug
endif
+ifeq "$(BuildSharedLibs)" "YES"
+GhcRTSWays += dyn debug_dyn thr_dyn thr_debug_dyn
+endif
+
# Want the threaded versions unless we're unregisterised
# Defer the check until later by using $(if..), because GhcUnregisterised might
# be set in build.mk, which hasn't been read yet.
# .NET interop support?
#
-DotnetSupport=@DotnetSupport@
+DotnetSupport=NO
# Build unix package?
#
DEFAULT_TMPDIR = /C/TEMP
endif
-# FPTOOLS_TOP: the top of the fptools hierarchy, absolute path.
+# FPTOOLS_TOP_ABS: the top of the fptools hierarchy, absolute path.
# On Windows this is a c:/foo/bar style path.
FPTOOLS_TOP_ABS = @hardtop@
-BIN_DIST_NAME=ghc-$(ProjectVersion)
BIN_DIST_TOPDIR_ABS=$(FPTOOLS_TOP_ABS)
BIN_DIST_DIR=$(BIN_DIST_TOPDIR_ABS)/$(BIN_DIST_NAME)
-BIN_DIST_TARBALL=$(FPTOOLS_TOP_ABS)/$(BIN_DIST_NAME)-$(TARGETPLATFORM).tar.bz2
+
+BIN_DIST_NAME=ghc-$(ProjectVersion)
+BIN_DIST_TAR=$(BIN_DIST_NAME)-$(TARGETPLATFORM).tar
+BIN_DIST_TAR_BZ2=$(BIN_DIST_TAR).bz2
+BIN_DIST_PREP_DIR=$(FPTOOLS_TOP_ABS)/bindist-prep
+BIN_DIST_PREP=$(BIN_DIST_PREP_DIR)/$(BIN_DIST_NAME)
+BIN_DIST_LIST=$(FPTOOLS_TOP_ABS)/bindist-list
# 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
# Unix: override libdir and datadir to put ghc-specific stuff in
# a subdirectory with the version number included.
+#
+# datadir is set to libdir here as GHC needs package.conf and unlit
+# to be in the same place (and things like ghc-pkg need to agree on
+# where package.conf is, so we just set it globally).
+#
datarootdir := $(datadir0)
-datadir := $(datadir0)/ghc-$(ProjectVersion)
libdir := $(libdir0)/ghc-$(ProjectVersion)
+datadir := $(libdir)
# 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.
GHC_SPLIT_DIR_REL = $(GHC_DRIVER_DIR_REL)/split
GHC_SYSMAN_DIR_REL = $(GHC_RTS_DIR_REL)/parallel
+INPLACE_DATA_DIR = $(FPTOOLS_TOP_ABS)/inplace-datadir
+
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)
# tree). We can refer to "this ghc" as $(GHC_INPLACE):
GHC_INPLACE = $(GHC_STAGE1)
-GHC_STAGE1 = $(GHC_COMPILER_DIR_ABS)/stage1-inplace/bin/ghc
-GHC_STAGE2 = $(GHC_COMPILER_DIR_ABS)/stage2-inplace/bin/ghc
-GHC_STAGE3 = $(GHC_COMPILER_DIR_ABS)/stage3-inplace/bin/ghc
+GHC_STAGE1 = $(GHC_COMPILER_DIR_ABS)/stage1-inplace/ghc
+GHC_STAGE2 = $(GHC_COMPILER_DIR_ABS)/stage2-inplace/ghc
+GHC_STAGE3 = $(GHC_COMPILER_DIR_ABS)/stage3-inplace/ghc
# XXX All those used to have -no-user-package-conf, but then we can't
# pass them to Cabal
# some variables appropriately:
HC =$(GHC_STAGE1)
MKDEPENDHS =$(GHC_STAGE1)
+USE_NEW_MKDEPEND_FLAGS = YES
GhcVersion = @ProjectVersion@
GhcPatchLevel = @ProjectPatchLevel@
# oops, these are wrong:
GhcMajVersion = @GhcMajVersion@
GhcMinVersion = @GhcMinVersion@
-ghc_ge_605 = YES
ghc_ge_607 = YES
ghc_ge_609 = YES
else # not UseStage1 or BootingFromHc
+# Some useful GHC version predicates:
+ghc_ge_607 = @ghc_ge_607@
+ghc_ge_609 = @ghc_ge_609@
+
HC = @WithHc@
MKDEPENDHS = $(GHC)
-BOOTSTRAPPING_PACKAGE_CONF_HC_OPTS = -package-conf $(BOOTSTRAPPING_CONF)
-BOOTSTRAPPING_PACKAGE_CONF_MKDEPENDHS_OPTS = -package-conf $(BOOTSTRAPPING_CONF)
+USE_NEW_MKDEPEND_FLAGS = $(ghc_ge_609)
GhcVersion = @GhcVersion@
GhcPatchLevel = @GhcPatchLevel@
GhcMajVersion = @GhcMajVersion@
GhcMinVersion = @GhcMinVersion@
-# Some useful GHC version predicates:
-ghc_ge_605 = @ghc_ge_605@
-ghc_ge_607 = @ghc_ge_607@
-ghc_ge_609 = @ghc_ge_609@
+# We build a few packages using the installed GHC as part of the
+# bootstrapping process. These are installed into a local
+# package.conf file, $(BOOTSTRAPPING_CONF). When we invoke the
+# installed GHC we need to pass it -package-conf $(BOOTSTRAPPING_CONF).
+# So the following variables expand to -package-conf $(BOOTSTRAPPING_CONF)
+# when $(HC) does *not* point to one of the GHC binaries built in
+# the local tree.
+#
+BOOTSTRAPPING_PACKAGE_CONF_HC_OPTS =$(if $(findstring inplace, $(HC)),,-package-conf $(BOOTSTRAPPING_CONF))
+BOOTSTRAPPING_PACKAGE_CONF_MKDEPENDHS_OPTS =$(if $(findstring inplace, $(MKDEPENDHS)),,-package-conf $(BOOTSTRAPPING_CONF))
endif
# Canonicalised ghc version number, used for easy (integer) version
endif
SRC_HSC2HS_OPTS += $(addprefix --cflag=,$(filter-out -O,$(SRC_CC_OPTS)))
-
-# Given
-# foo bar
-# make
-# :\"-Ifoo\":\"-Ibar\"
-nothing=
-space=$(nothing) $(nothing)
-SRC_HSC2HS_OPTS += $(subst $(space),,$(foreach d,$(GMP_INCLUDE_DIRS),:\"-I$(d)\"))
+SRC_HSC2HS_OPTS += $(foreach d,$(GMP_INCLUDE_DIRS),-I$(d))
#-----------------------------------------------------------------------------
# GMP Library (version 2.0.x or above)
GHC_ALEX_OPTS = -g
#
-# Haddock
-#
-HADDOCK = @HaddockCmd@
-
-#
# Options for compiling in different `ways'.
#
# To configure up your own way, have a look at some of the standard ways