[project @ 2005-02-07 12:16:50 by simonpj]
[ghc-hetmet.git] / mk / config.mk.in
index 68a4fd2..af7dbe9 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
@@ -296,6 +302,7 @@ 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
 #
@@ -312,8 +319,13 @@ 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@
@@ -757,17 +769,6 @@ HaveLibMingwEx     = @HaveLibMingwEx@
 HaveFrameworkHaskellSupport = @HaveFrameworkHaskellSupport@
 
 #-----------------------------------------------------------------------------
-# Regex library
-# (if present in libc use that one, otherwise use the one in the tree)
-#
-HavePosixRegex  = @HavePosixRegex@
-
-#-----------------------------------------------------------------------------
-# GTK+
-
-GTK_CONFIG             = @GTK_CONFIG@
-
-#-----------------------------------------------------------------------------
 # Flex (currently unused, could be moved to glafp-utils)
 
 # FLEX                 = @LEX@
@@ -817,12 +818,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
@@ -1056,6 +1062,10 @@ 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 'thr_debug':
 WAY_thr_debug_NAME=threaded
 WAY_thr_debug_HC_OPTS=-optc-DTHREADED_RTS -optc-DDEBUG