[project @ 2005-05-17 12:34:13 by simonmar]
[ghc-hetmet.git] / mk / config.mk.in
index 66c18c1..6287525 100644 (file)
 # will be built as HC files for the target system, and likely won't
 # build on this host platform.
 #
+# An important invariant is that for any piece of source code, the
+# platform on which the code is going to run is the HOST platform,
+# and the platform on which we are building is the BUILD platform.
+# Additionally for the compiler, the platform this compiler will
+# generate code for is the TARGET.  TARGET is not meaningful outside
+# the compiler sources.
+#
 # Guidelines for when to use HOST vs. TARGET:
 #
 #  - In the build system (Makefile, foo.mk), normally we should test
 #
 #  - In the compiler itself, we should test HOST or TARGET depending
 #    on whether the conditional relates to the code being generated, or
-#    the platform on which the compiler is running.  For stage 2,
-#    HOSTPLATFORM should be reset to be TARGETPLATFORM (we currently
-#    don't do this, but we should).
+#    the platform on which the compiler is running.  See the section
+#    on "Coding Style" in the commentary for more details.
 #
-#  - In the RTS and library code, we should be testing TARGET only.
+#  - In all other code, we should be testing HOST only.
 #
 # NOTE: cross-compiling is not well supported by the build system.
 # You have to do a lot of work by hand to cross compile: see the
@@ -124,6 +130,13 @@ LeadingUnderscore=@LeadingUnderscore@
 # Pin a suffix on executables? If so, what (Windows only).
 exeext=@exeext@
 
+# Windows=YES if on a Windows platform
+ifneq "$(findstring $(HostOS_CPP), mingw32 cygwin32)" ""
+Windows=YES
+else
+Windows=NO
+endif
+
 ################################################################################
 #
 #              project-wide flags
@@ -145,9 +158,9 @@ BootingFromUnregisterisedHc = @BootingFromUnregisterisedHc@
 #
 # Build the libs first if we're bootstrapping from .hc files.
 ifeq "$(BootingFromHc)" "YES"
-AllProjects = glafp-utils happy alex haddock libraries hslibs ghc greencard hdirect hood nofib
+AllProjects = glafp-utils happy alex haddock libraries hslibs ghc greencard hdirect hood nofib docs
 else
-AllProjects = glafp-utils happy alex haddock ghc libraries hslibs greencard hdirect hood nofib
+AllProjects = glafp-utils happy alex haddock ghc libraries hslibs greencard hdirect hood nofib docs
 endif
 
 #
@@ -173,10 +186,10 @@ IncludeTestDirsInBuild=NO
 IncludeExampleDirsInBuild=NO
 
 #
-# Which ways should SGML documents be built?
-# options are: dvi ps pdf html rtf
+# Which ways should DocBook XML documents be built?
+# options are: dvi ps pdf html chm HxS
 #
-SGMLDocWays=
+XMLDocWays=
 
 ################################################################################
 #
@@ -240,8 +253,9 @@ GhcUnregisterised=NO
 # (as well as a C backend)
 #
 # Target platforms supported:
-#   i386, sparc & powerpc
-ifneq "$(findstring $(HostArch_CPP), i386 sparc powerpc)" ""
+#   i386, powerpc
+#   sparc has bitrotted
+ifneq "$(findstring $(HostArch_CPP), i386 x86_64 powerpc)" ""
 GhcWithNativeCodeGen=YES
 else
 GhcWithNativeCodeGen=NO
@@ -254,9 +268,13 @@ HaveLibDL = @HaveLibDL@
 HaveRtldNext = @HaveRtldNext@
 HaveRtldLocal = @HaveRtldLocal@
 
-# Include GHCi in the compiler.  Default to NO for the time being.
+# Whether to include GHCi in the compiler.  Depends on whether the RTS linker
+# has support for this OS/ARCH combination.
+
+OsSupportsGHCi=$(strip $(patsubst $(HostOS_CPP), YES, $(findstring $(HostOS_CPP), mingw32 cygwin32 linux solaris2 freebsd netbsd openbsd darwin)))
+ArchSupportsGHCi=$(strip $(patsubst $(HostArch_CPP), YES, $(findstring $(HostArch_CPP), i386 powerpc powerpc64 sparc sparc64)))
 
-ifneq "$(findstring $(HostOS_CPP), mingw32 cygwin32 linux solaris2 freebsd netbsd openbsd darwin)" ""
+ifeq "$(OsSupportsGHCi)$(ArchSupportsGHCi)" "YESYES"
 GhcWithInterpreter=YES
 else 
 GhcWithInterpreter=NO
@@ -288,13 +306,14 @@ endif
 #   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
 #
 ifeq "$(BootingFromHc)" "YES"
 GhcRTSWays=
 else
-GhcRTSWays=thr thr_p debug
+GhcRTSWays=thr thr_p debug thr_debug
 endif
 
 # Option flags to pass to GHC when it's compiling modules in
@@ -304,23 +323,17 @@ endif
 #
 #      -O is pretty desirable, otherwise no inlining of prelude
 #              things (incl "+") happens when compiling with this compiler
+#
+#      -fgenerics switches on generation of support code for 
+#              derivable type classes.  This is now off by default,
+#              but we switch it on for the libraries so that we generate
+#              the code in case someone importing wants it
 
-GhcLibHcOpts=-O -Rghc-timing
+GhcLibHcOpts=-O -Rghc-timing -fgenerics
 
 # Win32 only: Enable the RTS and libraries to be built as DLLs
 DLLized=@EnableWin32DLLs@
 
-# Win32 only: are we building a compiler that tries to reduce external
-# dependencies? i.e., one that doesn't assume that the user has got
-# the cygwin toolchain installed on his/her Win32 box.
-#
-# GHC is still dependent on GNU tools in the backend (gcc to further process
-# .c/.hc/.s/.o files + 'perl' to mangle and split), but using this
-# option a GHC distribution can be put together which includes a minimal
-# set of these open source tools. 
-#
-MinimalUnixDeps=@MinimalUnixDeps@
-
 # Strip local symbols from libraries?  This can make the libraries smaller,
 # but makes debugging somewhat more difficult.  Doesn't work with all ld's.
 #
@@ -335,11 +348,14 @@ StripLibraries=NO
 #      Don't use -split-objs in in GhcLibHcOpts, because the build
 #              system needs to do other special magic if you are
 #              doing object-file splitting
+ifneq "$(findstring $(HostArch_CPP), i386 powerpc sparc)" ""
+SplitObjs=YES
+else
+SplitObjs=NO
+endif
 
 # Don't split object files for libs if we're building DLLs, or booting from
 # .hc files.
-SplitObjs=YES
-
 ifeq "$(DLLized)" "YES"
 SplitObjs=NO
 endif
@@ -349,7 +365,7 @@ endif
 ifeq "$(GhcUnregisterised)" "YES"
 SplitObjs=NO
 endif
-ifeq "$(TARGETPLATFORM)" "ia64-unknown-linux"
+ifeq "$(TargetArch_CPP)" "ia64"
 SplitObjs=NO
 endif
 
@@ -357,7 +373,7 @@ endif
 # Options for GHC's RTS
 
 # For an optimised RTS (you probably don't want to change these; we build
-# a debugging RTS by default now.  Use -package rts_debug to get it).
+# a debugging RTS by default now.  Use -debug to get it).
 GhcRtsHcOpts=-O2
 GhcRtsCcOpts=-fomit-frame-pointer
 
@@ -389,27 +405,6 @@ LIBM=@LIBM@
 #
 GhcLibsWithObjectIO=@GhcLibsWithObjectIO@
 
-# Build the Haskell OpenGL binding?
-#
-GhcLibsWithOpenGL=@GhcLibsWithOpenGL@
-GLU_CFLAGS=@GLU_CFLAGS@
-GLU_LIBS=@GLU_LIBS@
-
-# Build the Haskell OpenAL binding?
-#
-GhcLibsWithOpenAL=@GhcLibsWithOpenAL@
-
-# Build the Haskell GLUT binding?
-#
-GhcLibsWithGLUT=@GhcLibsWithGLUT@
-GLUT_LIBS=@GLUT_LIBS@
-
-# X11 stuff
-#
-GhcLibsWithX11=@GhcLibsWithX11@
-X_CFLAGS=@X_CFLAGS@
-X_LIBS=@X_LIBS@
-
 # .NET interop support?
 #
 DotnetSupport=@DotnetSupport@
@@ -479,6 +474,9 @@ NoFibWays = $(GhcLibWays)
 # Haskell compiler options for nofib
 NoFibHcOpts = -O
 
+# Number of times to run each program
+NoFibRuns = 5
+
 # ==============================================================================
 #
 #                      END OF PROJECT-SPECIFIC STUFF
@@ -521,8 +519,6 @@ FPTOOLS_TOP_ABS_PLATFORM = @hardtop_plat@
 # but since the configure script has them on offer while
 # passing through, we might as well set them.
 
-ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
-
 prefix                 = @prefix@
 exec_prefix            = @exec_prefix@
 bindir                 = @bindir@
@@ -532,52 +528,31 @@ includedir                = @includedir@
 oldincludedir          = @oldincludedir@
 mandir                 = @mandir@
 
+ifeq "$(Windows)" "YES"
+
 ifeq "$(strip $(prefix))" ""
 prefix         = c:/ghc
 endif
 
-ifacedir   = $(libdir)
-
-ifeq "$(strip $(exec_prefix))" ""
-exec_prefix            = $(prefix)
-endif
-ifeq "$(strip $(bindir))" ""
-bindir                 = $(exec_prefix)/bin
-endif
-
-libexecdir             = $(libdir)
-
-ifeq "$(strip $(datadir))" ""
-datadir                = $(prefix)/imports
-endif
-ifeq "$(strip $(libdir))" ""
+# Hack: our directory layouts tend to be different on Windows, so
+# hack around configure's bogus assumptions here.
+datadir        = $(prefix)
 libdir         = $(prefix)
-endif
-ifeq "$(strip $(includedir))" ""
-includedir     = $(prefix)/include
-endif
 
 else
 
-prefix                 = @prefix@
-exec_prefix            = @exec_prefix@
-bindir                 = @bindir@
-datadir0               = @datadir@
-libdir0                        = @libdir@
-includedir             = @includedir@
-oldincludedir          = @oldincludedir@
-mandir                 = @mandir@
-
 #
-# override libdir and datadir to put project-specific stuff in
+# Unix: override libdir and datadir to put project-specific stuff in
 # a subdirectory with the version number included.
 #
 libdir     = $(if $(ProjectNameShort),$(libdir0)/$(ProjectNameShort)-$(ProjectVersion),$(libdir0))
 datadir    = $(if $(ProjectNameShort),$(datadir0)/$(ProjectNameShort)-$(ProjectVersion),$(datadir0))
 
+endif # Windows
+
 # Default place for putting interface files is $(libdir)
 # (overriden for packages in package.mk)
-ifacedir   = $(libdir)
+ifacedir               = $(libdir)
 
 # 
 # Default values for most of the above are only set if
@@ -616,14 +591,31 @@ ifeq "$(strip $(mandir))" ""
 mandir         = $(prefix)/man
 endif
 
-endif  # i386-unknown-mingw32
+#-----------------------------------------------------------------------------
+# 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 =
 
-################################################################################
 #
-#              Utilities programs: flags
+# 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_DIR     = $(MKDIRHIER)
+
+# -----------------------------------------------------------------------------
+# Utilities programs: flags 
 
 # If you want to give any standard flags to pretty much any utility
 # (see utils.mk for a complete list), by adding a line here
@@ -770,9 +762,6 @@ ifeq "$(TARGETPLATFORM)" "ia64-unknown-linux"
 SRC_CC_OPTS += -G0
 endif
 
-# Solaris2 strikes again.
-unix_SRC_HSC2HS_OPTS += @unix_SRC_HSC2HS_OPTS@
-
 #-----------------------------------------------------------------------------
 # GMP Library (version 2.0.x or above)
 #
@@ -780,25 +769,14 @@ HaveLibGmp        = @HaveLibGmp@
 LibGmp         = @LibGmp@
 
 #-----------------------------------------------------------------------------
-# Mingwex Library
-#
-HaveLibMingwEx = @HaveLibMingwEx@
-
-#-----------------------------------------------------------------------------
-# HaskellSupport framework (Mac OS X)
+# GMP framework (Mac OS X)
 #
-HaveFrameworkHaskellSupport = @HaveFrameworkHaskellSupport@
+HaveFrameworkGMP = @HaveFrameworkGMP@
 
 #-----------------------------------------------------------------------------
-# Regex library
-# (if present in libc use that one, otherwise use the one in the tree)
+# Mingwex Library
 #
-HavePosixRegex  = @HavePosixRegex@
-
-#-----------------------------------------------------------------------------
-# GTK+
-
-GTK_CONFIG             = @GTK_CONFIG@
+HaveLibMingwEx = @HaveLibMingwEx@
 
 #-----------------------------------------------------------------------------
 # Flex (currently unused, could be moved to glafp-utils)
@@ -826,6 +804,7 @@ CTAGS                       = $(ETAGS)
 #
 RAWCPP_FLAGS            = -undef -traditional
 FIND                   = @FindCmd@
+SORT                   = @SortCmd@
 INSTALL                        = @INSTALL@
 #
 # Sigh - the autoconf macro for INSTALL will subst a relative path to the fallback
@@ -850,12 +829,17 @@ RM                        = rm -f
 SED                    = @SedCmd@
 SHELL                  = /bin/sh
 
+LD                     = @LdCmd@
+
 # Some ld's support the -x flag and some don't, so the configure
 # script detects which we have and sets LdXFlag to "-x" or ""
 # respectively.
-LD                     = @LdCmd@
 LD_X                   = @LdXFlag@
 
+# GNU ld supports input via a linker script, which is useful to avoid
+# overflowing command-line length limits.
+LdIsGNULd              = @LdIsGNULd@
+
 #
 # In emergency situations, REAL_SHELL is used to perform shell commands
 # from within the ghc driver script, by scribbling the command line to
@@ -899,25 +883,20 @@ TROFF                     = troff
 UNAME                  = uname
 
 #-----------------------------------------------------------------------------
-# SGML stuff
-
-JADE                   = @JadeCmd@
-
-SGML2DVI               = $(DOCBOOK_PREFIX)db2dvi
-SGML2HTML              = $(DOCBOOK_PREFIX)db2html
-SGML2PS                        = $(DOCBOOK_PREFIX)db2ps
-SGML2PDF               = $(DOCBOOK_PREFIX)db2pdf
-SGML2RTF               = $(DOCBOOK_PREFIX)db2rtf
+# DocBook XML stuff
 
-SGMLSTYLESHEET          = $(FPTOOLS_TOP_ABS)/docs/fptools-both.dsl
+XSLTPROC               = @XsltprocCmd@
+XMLLINT                        = @XmllintCmd@
+FOP                    = @FopCmd@
+XMLTEX                 = @XmltexCmd@
+PDFXMLTEX              = @PdfxmltexCmd@
+DVIPS                  = @DvipsCmd@
 
-SRC_SGML2DVI_OPTS       = -d $(SGMLSTYLESHEET)
-SRC_SGML2HTML_OPTS      = -d $(SGMLSTYLESHEET)
-SRC_SGML2PS_OPTS       = -d $(SGMLSTYLESHEET)
-SRC_SGML2RTF_OPTS       = -d $(SGMLSTYLESHEET)
-SRC_SGML2PDF_OPTS       = -d $(SGMLSTYLESHEET)
+DIR_DOCBOOK_XSL                = @DIR_DOCBOOK_XSL@
 
-DOCBOOK_CATALOG                = @Catalog@
+XSLTPROC_LABEL_OPTS    = --stringparam toc.section.depth 3 \
+                         --stringparam section.autolabel 1 \
+                         --stringparam section.label.includes.component.label 1
 
 #-----------------------------------------------------------------------------
 #              FPtools support software
@@ -931,7 +910,6 @@ ETAGS                       = $(ETAGS_PREFIX)etags
 VERBATIM               = $(VERBATIM_PREFIX)verbatim
 SGMLVERB               = $(SGMLVERB_PREFIX)sgmlverb
 RUNTEST                        = $(RUNTEST_PREFIX)runstdtest
-LX                     = @LxCmd@
 
 BLD_DLL                        = dllwrap
 
@@ -1095,6 +1073,14 @@ WAY_debug_HC_OPTS=-optc-DDEBUG
 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_s':
+WAY_debug_s_NAME=debug SMP
+WAY_debug_s_HC_OPTS=-optc-DDEBUG -smp
+
 # Way 'thr_debug':
 WAY_thr_debug_NAME=threaded
 WAY_thr_debug_HC_OPTS=-optc-DTHREADED_RTS -optc-DDEBUG