# If you don't have a build.mk file then you get defaults for everything.
# The defaults should provide a reasonable vanilla build.
-ifneq "$(findstring 3.7, $(MAKE_VERSION))" ""
-ifeq "$(findstring 3.79.1, $(MAKE_VERSION))" ""
-$(error GNU make version 3.79.1 or later is required.)
-endif
-endif
-
# TOP: the top of the fptools hierarchy, absolute path.
# On Windows this is a c:/foo/bar style path.
TOP = @hardtop@
GhcLibProfiled=$(if $(filter p,$(GhcLibWays)),YES,NO)
# Build shared and/or static libs?
-BuildSharedLibs=@BuildSharedLibs@
+PlatformSupportsSharedLibs = $(if $(filter $(TARGETPLATFORM),i386-unknown-linux x86_64-unknown-linux),YES,NO)
+ifeq "$(PlatformSupportsSharedLibs)" "YES"
+BuildSharedLibs = YES
+else
+BuildSharedLibs = NO
+endif
# ToDo later:
# BuildStaticLibs=@BuildStaticLibs@
GhcEnableTablesNextToCode=YES
endif
+# Whether to use libffi for adjustors (foreign import "wrapper") or
+# not. If we have built-in support (rts/Adjustor.c) then we use that,
+# otherwise we fall back on libffi, which is slightly slower.
+ArchHasAdjustorSupport=$(strip $(if $(findstring $(HostArch_CPP),i386 x86_64 alpha powerpc ia64,),YES,NO))
+ifeq "$(ArchHasAdjustorSupport)" "YES"
+UseLibFFIForAdjustors=NO
+else
+UseLibFFIForAdjustors=YES
+endif
+
# On Windows we normally want to make a relocatable bindist, to we
# ignore flags like libdir
ifeq "$(Windows)" "YES"
BuildingParallel=$(subst mp,YES,$(filter mp,$(WAYS)))
BuildingGranSim=$(subst mg,YES,$(filter mg,$(WAYS)))
-# 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
-
#------------------------------------------------------------------------------
# Options for Libraries
#
GhcLibsWithUnix=@GhcLibsWithUnix@
+CHECK_PACKAGES = NO
+
# ----------------------------------------------------------------------------
# Options for GHC's RTS
BIN_DIST_PREP=$(BIN_DIST_PREP_DIR)/$(BIN_DIST_NAME)
BIN_DIST_LIST=$(TOP)/bindist-list
+WINDOWS_INSTALLER_BASE = ghc-$(ProjectVersion)-i386-windows
+WINDOWS_INSTALLER = $(WINDOWS_INSTALLER_BASE)$(exeext)
+
# 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
# Invocations of `install' for the four different classes
# of targets:
#
+CREATE_SCRIPT = create () { touch $$1 && chmod 755 $$1 ; } && create
+CREATE_DATA = create () { touch $$1 && chmod 644 $$1 ; } && create
INSTALL_PROGRAM = $(INSTALL) -m 755
INSTALL_SCRIPT = $(INSTALL) -m 755
INSTALL_SHLIB = $(INSTALL) -m 755
INSTALL_DATA = $(INSTALL) -m 644
INSTALL_HEADER = $(INSTALL) -m 644
INSTALL_MAN = $(INSTALL) -m 644
-INSTALL_DIR = $(MKDIRHIER)
+INSTALL_DOC = $(INSTALL) -m 644
+INSTALL_DIR = $(INSTALL) -m 755 -d
#
# runhaskell and hsc2hs are special, in that other compilers besides
GC_CPP_OPTS += -P -E -x c -traditional -D__GLASGOW_HASKELL__
-################################################################################
-#
-# Layout of the source tree
-#
-################################################################################
-
-# 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)
-# indicates a directory relative to the top of the source tree.
-
-GHC_UTILS_DIR = utils
-GHC_INCLUDE_DIR = includes
-GHC_COMPILER_DIR = compiler
-GHC_PROG_DIR = ghc
-GHC_RTS_DIR = rts
-GHC_DRIVER_DIR = driver
-GHC_COMPAT_DIR = compat
-
-GHC_MKDEPENDC_DIR = $(GHC_UTILS_DIR)/mkdependC
-GHC_LTX_DIR = $(GHC_UTILS_DIR)/ltx
-GHC_LNDIR_DIR = $(GHC_UTILS_DIR)/lndir
-GHC_MKDIRHIER_DIR = $(GHC_UTILS_DIR)/mkdirhier
-GHC_DOCBOOK_DIR = $(GHC_UTILS_DIR)/docbook
-GHC_UNLIT_DIR = $(GHC_UTILS_DIR)/unlit
-GHC_HP2PS_DIR = $(GHC_UTILS_DIR)/hp2ps
-GHC_GHCTAGS_DIR = $(GHC_UTILS_DIR)/ghctags
-GHC_HSC2HS_DIR = $(GHC_UTILS_DIR)/hsc2hs
-GHC_TOUCHY_DIR = $(GHC_UTILS_DIR)/touchy
-GHC_PKG_DIR = $(GHC_UTILS_DIR)/ghc-pkg
-GHC_GENPRIMOP_DIR = $(GHC_UTILS_DIR)/genprimopcode
-GHC_GENAPPLY_DIR = $(GHC_UTILS_DIR)/genapply
-GHC_CABAL_DIR = $(GHC_UTILS_DIR)/ghc-cabal
-GHC_MANGLER_DIR = $(GHC_DRIVER_DIR)/mangler
-GHC_SPLIT_DIR = $(GHC_DRIVER_DIR)/split
-GHC_SYSMAN_DIR = $(GHC_RTS_DIR)/parallel
-
# -----------------------------------------------------------------------------
# Names of programs in the GHC tree
#
LTX = $(GHC_LTX_DIR)/$(GHC_LTX_PGM)
LNDIR = $(GHC_LNDIR_DIR)/$(GHC_LNDIR_PGM)
-INPLACE = inplace
-INPLACE_BIN = $(INPLACE)/bin
-INPLACE_LIB = $(INPLACE)/lib
-INPLACE_MINGW = $(INPLACE)/mingw
-
UNLIT = $(INPLACE_LIB)/$(GHC_UNLIT_PGM)
TOUCHY = $(INPLACE_LIB)/$(GHC_TOUCHY_PGM)
MKDIRHIER = $(INPLACE_BIN)/$(GHC_MKDIRHIER_PGM)
GhcMajVersion = @GhcMajVersion@
GhcMinVersion = @GhcMinVersion@
-ghc_ge_607 = @ghc_ge_607@
ghc_ge_609 = @ghc_ge_609@
# Canonicalised ghc version number, used for easy (integer) version
endif
endif
-# default C compiler flags
+# default C compiler and linker flags
SRC_CC_OPTS = @SRC_CC_OPTS@
+SRC_LD_OPTS = @SRC_LD_OPTS@
ifeq "$(TARGETPLATFORM)" "ia64-unknown-linux"
SRC_CC_OPTS += -G0
SRC_HSC2HS_OPTS += $(foreach d,$(GMP_INCLUDE_DIRS),-I$(d))
#-----------------------------------------------------------------------------
-# GMP Library (version 2.0.x or above)
-#
-HaveLibGmp = @HaveLibGmp@
-LibGmp = @LibGmp@
-
-GMP_INCLUDE_DIRS=@GMP_INCLUDE_DIRS@
-GMP_LIB_DIRS=@GMP_LIB_DIRS@
-
-#-----------------------------------------------------------------------------
-# GMP framework (Mac OS X)
-#
-HaveFrameworkGMP = @HaveFrameworkGMP@
-
-#-----------------------------------------------------------------------------
# Mingwex Library
#
HaveLibMingwEx = @HaveLibMingwEx@
PIC = pic
PREPROCESSCMD = $(CC) -E
RANLIB = @RANLIB@
-RM = rm -f
SED = @SedCmd@
SHELL = /bin/sh
# overflowing command-line length limits.
LdIsGNULd = @LdIsGNULd@
+# On MSYS, building with SplitObjs=YES fails with
+# ar: Bad file number
+# see #3201. We need to specify a smaller max command-line size
+# to work around it. 32767 doesn't work; 30000 does.
+ifeq "$(Windows)" "YES"
+XARGS = xargs -s 30000
+else
+XARGS = xargs
+endif
+
#
# In emergency situations, REAL_SHELL is used to perform shell commands
# from within the ghc driver script, by scribbling the command line to
#-----------------------------------------------------------------------------
# DocBook XML stuff
-BUILD_DOCBOOK_HTML = @BUILD_DOCBOOK_HTML@
-BUILD_DOCBOOK_PS = @BUILD_DOCBOOK_PS@
-BUILD_DOCBOOK_PDF = @BUILD_DOCBOOK_PDF@
-DBLATEX = @DblatexCmd@
-XSLTPROC = @XsltprocCmd@
-XMLLINT = @XmllintCmd@
-
-DIR_DOCBOOK_XSL = @DIR_DOCBOOK_XSL@
-
-XSLTPROC_LABEL_OPTS = --stringparam toc.section.depth 3 \
- --stringparam section.autolabel 1 \
- --stringparam section.label.includes.component.label 1
+BUILD_DOCBOOK_HTML = @BUILD_DOCBOOK_HTML@
+BUILD_DOCBOOK_PS = @BUILD_DOCBOOK_PS@
+BUILD_DOCBOOK_PDF = @BUILD_DOCBOOK_PDF@
+DBLATEX = @DblatexCmd@
+XSLTPROC = @XsltprocCmd@
+XMLLINT = @XmllintCmd@
+HAVE_DOCBOOK_XSL = @HAVE_DOCBOOK_XSL@
+XSLTPROC_HTML_STYLESHEET = http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl
+XSLTPROC_LABEL_OPTS = --stringparam toc.section.depth 3 \
+ --stringparam section.autolabel 1 \
+ --stringparam section.label.includes.component.label 1
#-----------------------------------------------------------------------------
# FPtools support software
#
# The ways currently defined.
#
-ALL_WAYS=v p t l s mp mg debug dyn thr thr_l debug_dyn thr_dyn thr_debug_dyn thr_p thr_debug thr_debug_l
+ALL_WAYS=v p t l s mp mg debug dyn thr thr_l debug_dyn thr_dyn thr_debug_dyn thr_p thr_debug thr_debug_l debug_p thr_debug_p
USER_WAYS=a b c d e f g h j k l m n o A B
#