WAY_dyn_LIB_TARGET is not used anywhere; kill it
[ghc-hetmet.git] / mk / config.mk.in
index 552a27e..3e63d84 100644 (file)
@@ -12,9 +12,7 @@
 # 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.
+#        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
 #
 #        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)
-#
-
-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@
 
 include $(TOP)/mk/project.mk
+include $(TOP)/mk/install.mk
 
 ################################################################################
 #
@@ -54,12 +44,6 @@ BootingFromUnregisterisedHc = @BootingFromUnregisterisedHc@
 NO_INCLUDE_DEPS = NO
 NO_INCLUDE_PKGDATA = NO
 
-#
-# Which ways should DocBook XML documents be built?
-# options are: dvi ps pdf html chm HxS
-#
-XMLDocWays=
-
 # Should we build latex docs?
 LATEX_DOCS = NO
 
@@ -122,7 +106,12 @@ GhcDebugged=NO
 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@
 
@@ -163,7 +152,7 @@ GhcWithNativeCodeGen=$(strip\
 HaveLibDL = @HaveLibDL@
 
 # ArchSupportsSMP should be set iff there is support for that arch in
-# includes/SMP.h
+# includes/stg/SMP.h
 ArchSupportsSMP=$(strip $(patsubst $(HostArch_CPP), YES, $(findstring $(HostArch_CPP), i386 x86_64 sparc powerpc)))
 
 # lazy test, because $(GhcUnregisterised) might be set in build.mk later.
@@ -192,6 +181,16 @@ else
 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"
@@ -210,25 +209,6 @@ BeConservative = NO
 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
 
@@ -271,7 +251,7 @@ GhcRTSWays += debug
 endif
 
 ifeq "$(BuildSharedLibs)" "YES"
-GhcRTSWays += dyn debug_dyn thr_dyn thr_debug_dyn
+GhcRTSWays += dyn debug_dyn $(if $(findstring NO, $(GhcUnregisterised)),thr_dyn thr_debug_dyn)
 endif
 
 # Want the threaded versions unless we're unregisterised
@@ -344,6 +324,8 @@ DotnetSupport=NO
 #
 GhcLibsWithUnix=@GhcLibsWithUnix@
 
+CHECK_PACKAGES = NO
+
 # ----------------------------------------------------------------------------
 # Options for GHC's RTS
 
@@ -395,146 +377,8 @@ BIN_DIST_PREP_DIR=$(TOP)/bindist-prep
 BIN_DIST_PREP=$(BIN_DIST_PREP_DIR)/$(BIN_DIST_NAME)
 BIN_DIST_LIST=$(TOP)/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
-# 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@
-
-# New autoconf (>= 2.60?) make a configure with a --datarootdir=DIR flag.
-# However, in order to support older autoconf's we don't use it.
-# datarootdir is set lower down instead.
-# But, as datadir is defined in terms of datarootdir, we also need to
-# set it to the value (if any) that configure gives it here.
-datarootdir     := @datarootdir@
-
-exec_prefix     := @exec_prefix@
-bindir          := @bindir@
-datadir0        := @datadir@
-libdir0         := @libdir@
-includedir      := @includedir@
-mandir          := @mandir@
-dynlibdir       := @libdir@
-
-ifeq "$(RelocatableBuild)" "YES"
-
-# Hack: our directory layouts tend to be different on Windows, so
-# hack around configure's bogus assumptions here.
-datarootdir := $(prefix)
-datadir     := $(prefix)/lib
-libdir      := $(prefix)/lib
-
-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.
-#
-# 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)
-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.
-
-#docdir    := @docdir@
-#htmldir   := @htmldir@
-#dvidir    := @dvidir@
-#pdfdir    := @pdfdir@
-#psdir     := @psdir@
-
-docdir    := $(datarootdir)/doc/ghc
-htmldir   := $(docdir)
-dvidir    := $(docdir)
-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)
-
-# 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)
-
-#-----------------------------------------------------------------------------
-# install configuration
-
-#
-# Set this to have files installed with a specific owner
-#
-INSTALL_OWNER =
-
-# 
-# Set this to have files installed with a specific group
-#
-INSTALL_GROUP =
-
-#
-# Invocations of `install' for the four different classes
-# of targets:
-#
-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)
-
-#
-# 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.
+WINDOWS_INSTALLER_BASE = ghc-$(ProjectVersion)-i386-windows
+WINDOWS_INSTALLER = $(WINDOWS_INSTALLER_BASE)$(exeext)
 
 # -----------------------------------------------------------------------------
 # Utilities programs: flags 
@@ -561,43 +405,6 @@ SRC_BLD_DLL_OPTS += --target=i386-mingw32
 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_HSTAGS_DIR          = $(GHC_UTILS_DIR)/hasktags
-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
 #
@@ -606,7 +413,6 @@ GHC_SYSMAN_DIR          = $(GHC_RTS_DIR)/parallel
 
 GHC_UNLIT_PGM           = unlit$(exeext)
 GHC_HP2PS_PGM           = hp2ps$(exeext)
-GHC_HSTAGS_PGM          = hasktags$(exeext)
 GHC_GHCTAGS_PGM         = ghctags$(exeext)
 GHC_HSC2HS_PGM          = hsc2hs$(exeext)
 GHC_TOUCHY_PGM          = touchy$(exeext)
@@ -632,18 +438,12 @@ GHC_PERL          = $(PERL)
 endif
 
 HP2PS                  = $(GHC_HP2PS_DIR)/$(GHC_HP2PS_PGM)
-HSTAGS                 = $(GHC_HSTAGS_DIR)/$(GHC_HSTAGS_PGM)
 MANGLER                        = $(INPLACE_LIB)/$(GHC_MANGLER_PGM)
 SPLIT                  = $(INPLACE_LIB)/$(GHC_SPLIT_PGM)
 SYSMAN                         = $(GHC_SYSMAN_DIR)/$(GHC_SYSMAN_PGM)
 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)
@@ -715,7 +515,6 @@ GhcPatchLevel       = @GhcPatchLevel@
 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
@@ -746,8 +545,9 @@ else
 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
@@ -757,20 +557,6 @@ SRC_HSC2HS_OPTS += $(addprefix --cflag=,$(filter-out -O,$(SRC_CC_OPTS)))
 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@
@@ -822,7 +608,6 @@ PYTHON                      = @PythonCmd@
 PIC                    = pic
 PREPROCESSCMD          = $(CC) -E
 RANLIB                 = @RANLIB@
-RM                     = rm -f
 SED                    = @SedCmd@
 SHELL                  = /bin/sh
 
@@ -837,6 +622,16 @@ LD_X                       = @LdXFlag@
 # 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
@@ -892,18 +687,17 @@ ISCC                    =
 #-----------------------------------------------------------------------------
 # 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
@@ -945,6 +739,8 @@ ALEX_VERSION                = @AlexVersion@
 #
 SRC_ALEX_OPTS          = -g
 
+HSTAGS = @HstagsCmd@
+
 # Should we build haddock docs?
 HADDOCK_DOCS = YES
 # And HsColour the sources?
@@ -978,7 +774,7 @@ endif
 #
 # 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
 
 #
@@ -1056,7 +852,6 @@ WAY_thr_debug_l_HC_OPTS=-optc-DTHREADED_RTS -optc-DDEBUG -eventlog
 # Way 'dyn': build dynamic shared libraries
 WAY_dyn_NAME=dyn
 WAY_dyn_HC_OPTS=-fPIC -dynamic
-WAY_dyn_LIB_TARGET=libHSrts-gcc661.so
 
 # Way 'thr_dyn':
 WAY_thr_dyn_NAME=thr_dyn