Require HsColour by default
[ghc-hetmet.git] / mk / config.mk.in
index 783f4f9..495194d 100644 (file)
@@ -185,6 +185,14 @@ BootingFromUnregisterisedHc = @BootingFromUnregisterisedHc@
 #
 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@
@@ -241,6 +249,12 @@ GhcStage3HcOpts=-O2
 
 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
@@ -277,9 +291,6 @@ GhcWithNativeCodeGen=$(strip\
     $(if $(filter YESYESNO,\
                  $(OsSupportsNCG)$(ArchSupportsNCG)$(GhcUnregisterised)),YES,NO))
 
-# Include support for generating Java
-GhcWithJavaGen=NO
-
 HaveLibDL = @HaveLibDL@
 
 # ArchSupportsSMP should be set iff there is support for that arch in
@@ -349,8 +360,6 @@ BuildingGranSim=$(subst mg,YES,$(filter mg,$(WAYS)))
 
 HscIfaceFileVersion=6
 
-MakefileDeps=YES
-
 #------------------------------------------------------------------------------
 # Options for Libraries
 
@@ -367,6 +376,10 @@ else
 GhcLibWays=p
 endif
 
+ifeq "$(BuildSharedLibs)" "YES"
+GhcLibWays += dyn
+endif
+
 # In addition, the RTS is built in some further variations.  Ways that
 # make sense here:
 # 
@@ -386,6 +399,10 @@ ifeq "$(BootingFromHc)" "NO"
 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.
@@ -442,13 +459,9 @@ SplitObjs=$(strip $(if $(filter $(TargetArch_CPP),i386 x86_64 powerpc sparc),\
 # Math library
 LIBM=@LIBM@
 
-# Build the ObjectIO ?
-#
-GhcLibsWithObjectIO=@GhcLibsWithObjectIO@
-
 # .NET interop support?
 #
-DotnetSupport=@DotnetSupport@
+DotnetSupport=NO
 
 # Build unix package?
 #
@@ -468,7 +481,8 @@ GhcRtsWithFrontPanel = NO
 # Include support for CPU performance counters via the PAPI library in the RTS?
 # (PAPI: http://icl.cs.utk.edu/papi/)
 GhcRtsWithPapi = NO
-HavePapi = @HavePapi@
+PapiLibDir=
+PapiIncludeDir=
 
 ################################################################################
 #
@@ -526,14 +540,19 @@ ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
 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=$(FPTOOLS_TOP_ABS)/$(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
@@ -600,9 +619,14 @@ 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)
-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.
@@ -633,10 +657,7 @@ ifacedir           = $(libdir)
 #     (NOTE: configure script setting is ignored).
 libexecdir             = $(libdir)
 
-# 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.
-GHC_PKG_PROG = $(FPTOOLS_TOP_ABS)/$(GHC_PKG_DIR_REL)/ghc-pkg-inplace
+GHC_PKG_PROG = $(FPTOOLS_TOP_ABS)/$(GHC_PKG_DIR_REL)/install-inplace/bin/ghc-pkg
 
 #-----------------------------------------------------------------------------
 # install configuration
@@ -699,7 +720,7 @@ 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
+SRC_BLD_DLL_OPTS += --target=i386-mingw32
 
 # Flags for CPP when running GreenCard on .pgc files
 GC_CPP_OPTS += -P -E -x c -traditional -D__GLASGOW_HASKELL__
@@ -719,7 +740,7 @@ GC_CPP_OPTS += -P -E -x c -traditional -D__GLASGOW_HASKELL__
 
 GHC_UTILS_DIR_REL      = utils
 GHC_INCLUDE_DIR_REL    = includes
-GHC_COMPILER_DIR_REL   = compiler
+GHC_COMPILER_DIR_REL = ghc
 GHC_RTS_DIR_REL                = rts
 GHC_UTILS_DIR_REL      = utils
 GHC_DRIVER_DIR_REL     = driver
@@ -745,6 +766,8 @@ GHC_MANGLER_DIR_REL = $(GHC_DRIVER_DIR_REL)/mangler
 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)
@@ -763,7 +786,7 @@ 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_HSC2HS_DIR         = $(FPTOOLS_TOP_ABS)/$(GHC_HSC2HS_DIR_REL)
 GHC_TOUCHY_DIR         = $(FPTOOLS_TOP)/$(GHC_TOUCHY_DIR_REL)
 GHC_PKG_DIR            = $(FPTOOLS_TOP)/$(GHC_PKG_DIR_REL)
 GHC_GENPRIMOP_DIR      = $(FPTOOLS_TOP)/$(GHC_GENPRIMOP_DIR_REL)
@@ -796,6 +819,7 @@ GHC_TOUCHY_DIR_ABS  = $(FPTOOLS_TOP_ABS)/$(GHC_TOUCHY_DIR_REL)
 GHC_PKG_DIR_ABS                = $(FPTOOLS_TOP_ABS)/$(GHC_PKG_DIR_REL)
 GHC_GENPRIMOP_DIR_ABS  = $(FPTOOLS_TOP_ABS)/$(GHC_GENPRIMOP_DIR_REL)
 GHC_GENAPPLY_DIR_ABS   = $(FPTOOLS_TOP_ABS)/$(GHC_GENAPPLY_DIR_REL)
+GHC_COMPILER_DIR_ABS   = $(FPTOOLS_TOP_ABS)/$(GHC_COMPILER_DIR_REL)
 
 GHC_MANGLER_DIR_ABS    = $(FPTOOLS_TOP_ABS)/$(GHC_MANGLER_DIR_REL)
 GHC_SYSMAN_DIR_ABS     = $(FPTOOLS_TOP_ABS)/$(GHC_SYSMAN_DIR_REL)
@@ -811,12 +835,11 @@ 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_HSC2HS_INPLACE_PGM = hsc2hs
 GHC_TOUCHY_PGM         = touchy$(exeext)
 GHC_MANGLER_PGM                = ghc-asm
 GHC_SPLIT_PGM          = ghc-split
 GHC_SYSMAN_PGM                 = SysMan
-GHC_PKG_INPLACE_PGM    = ghc-pkg-inplace
 GHC_GENPRIMOP_PGM      = genprimopcode
 GHC_GENAPPLY_PGM       = genapply
 GHC_MKDEPENDC_PGM      = mkdependC
@@ -837,11 +860,11 @@ 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)
+HSC2HS_INPLACE         = $(GHC_HSC2HS_DIR)/install-inplace/bin/$(GHC_HSC2HS_INPLACE_PGM)
 MANGLER                        = $(GHC_MANGLER_DIR)/$(GHC_MANGLER_PGM)
 SPLIT                  = $(GHC_SPLIT_DIR)/$(GHC_SPLIT_PGM)
 SYSMAN                         = $(GHC_SYSMAN_DIR)/$(GHC_SYSMAN_PGM)
-GHC_PKG_INPLACE                = $(GHC_PKG_DIR)/$(GHC_PKG_INPLACE_PGM)
+GHC_PKG_INPLACE                = $(GHC_PKG_PROG)
 GENPRIMOP              = $(GHC_GENPRIMOP_DIR)/$(GHC_GENPRIMOP_PGM)
 GENAPPLY               = $(GHC_GENAPPLY_DIR)/$(GHC_GENAPPLY_PGM)
 MKDEPENDC              = $(GHC_MKDEPENDC_DIR)/$(GHC_MKDEPENDC_PGM)
@@ -878,10 +901,14 @@ NHC               = @NHC@
 # places (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    = $(GHC_COMPILER_DIR)/ghc-inplace
-GHC_STAGE1     = $(GHC_COMPILER_DIR)/stage1/ghc-inplace -no-user-package-conf
-GHC_STAGE2     = $(GHC_COMPILER_DIR)/stage2/ghc-inplace -no-user-package-conf
-GHC_STAGE3     = $(GHC_COMPILER_DIR)/stage3/ghc-inplace -no-user-package-conf
+GHC_INPLACE = $(GHC_STAGE1)
+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
+
+BOOTSTRAPPING_CONF = $(FPTOOLS_TOP_ABS)/libraries/bootstrapping.conf
 
 # NOTE: add -no-user-package-conf for stage 1-3 above, so that
 # we avoid picking up any packages the user might happen to have
@@ -897,29 +924,40 @@ ifneq "$(findstring YES, $(UseStage1) $(BootingFromHc))" ""
 # 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)
+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
@@ -958,6 +996,9 @@ ifeq "$(TARGETPLATFORM)" "ia64-unknown-linux"
 SRC_CC_OPTS += -G0
 endif
 
+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)
 #
@@ -1153,11 +1194,6 @@ ALEX_VERSION             = @AlexVersion@
 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