[project @ 2003-11-15 19:37:13 by panne]
[ghc-hetmet.git] / mk / config.mk.in
index 3153e49..cac676c 100644 (file)
 
 # A "platform" is the GNU cpu-type/manufacturer/operating-system target machine
 # specifier.  E.g. sparc-sun-solaris2
+#
+# Build  platform: the platform on which we are doing this build
+# Host   platform: the platform on which these binaries will run
+# Target platform: the platform for which this compiler will generate code
+#
+# We don't support build & host being different, because the build
+# process creates binaries that are run during the build, and also
+# installed.
+#
+# If host & target are different, then we are building a compiler
+# which will generate intermediate .hc files to port to the target
+# architecture for bootstrapping.  The libraries and stage 2 compiler
+# will be built as HC files for the target system, and likely won't
+# build on this host platform.
+#
+# Guidelines for when to use HOST vs. TARGET:
+#
+#  - In the build system (Makefile, foo.mk), normally we should test
+#    $(HOSTPLATFORM).  There are some cases (eg. installation), where
+#    we expect $(HOSTPLATFORM)==$(TARGETPLATFORM), so in those cases it
+#    doesn't matter which is used.
+#
+#  - 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).
+#
+#  - In the RTS and library code, we should be testing TARGET 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
+# section on "Porting GHC" in the Building Guide.
 
 HOSTPLATFORM                   = @HostPlatform@
 TARGETPLATFORM                 = @TargetPlatform@
-BUILDPLATFORM                  = @HostPlatform@
+BUILDPLATFORM                  = @BuildPlatform@
 
 # Hack alert:
-# in one or two places, we need to get at the OS version (major and perhaps even minor),
-# HostOS_Full is the OS name reported by AC_CANONICAL_SYSTEM.
+# in one or two places, we need to get at the OS version (major and
+# perhaps even minor), HostOS_Full is the OS name reported by
+# AC_CANONICAL_SYSTEM.
 #
 HostPlatform_CPP               = @HostPlatform_CPP@
 HostArch_CPP                   = @HostArch_CPP@
@@ -56,25 +90,31 @@ HostOS_CPP                  = @HostOS_CPP@
 HostOS_Full                    = @HostOS_Full@
 HostVendor_CPP                 = @HostVendor_CPP@
 
-#
-# ToDo: check if these can be purged now. -- sof
-#
+TargetPlatform_CPP             = @TargetPlatform_CPP@
+TargetArch_CPP                 = @TargetArch_CPP@
+TargetOS_CPP                   = @TargetOS_CPP@
+TargetVendor_CPP                = @TargetVendor_CPP@
+
+BuildPlatform_CPP              = @BuildPlatform_CPP@
+BuildArch_CPP                  = @BuildArch_CPP@
+BuildOS_CPP                    = @BuildOS_CPP@
+BuildVendor_CPP                 = @BuildVendor_CPP@
 
-@HostPlatform_CPP@_HOST        = 1
-@HostPlatform_CPP@_TARGET      = 1
-@HostPlatform_CPP@_BUILD       = 1
+@HostPlatform_CPP@_HOST           = 1
+@TargetPlatform_CPP@_TARGET       = 1
+@BuildPlatform_CPP@_BUILD         = 1
 
-@HostArch_CPP@_HOST_ARCH       = 1
-@HostArch_CPP@_TARGET_ARCH     = 1
-@HostArch_CPP@_BUILD_ARCH      = 1
+@HostArch_CPP@_HOST_ARCH          = 1
+@TargetArch_CPP@_TARGET_ARCH      = 1
+@BuildArch_CPP@_BUILD_ARCH        = 1
 
-@HostOS_CPP@_HOST_OS           = 1
-@HostOS_CPP@_TARGET_OS         = 1
-@HostOS_CPP@_BUILD_OS          = 1
+@HostOS_CPP@_HOST_OS              = 1
+@TargetOS_CPP@_TARGET_OS          = 1
+@BuildOS_CPP@_BUILD_OS            = 1
 
-@HostVendor_CPP@_HOST_VENDOR    = 1
-@HostVendor_CPP@_TARGET_VENDOR  = 1
-@HostVendor_CPP@_BUILD_VENDOR   = 1
+@HostVendor_CPP@_HOST_VENDOR      = 1
+@TargetVendor_CPP@_TARGET_VENDOR  = 1
+@BuildVendor_CPP@_BUILD_VENDOR    = 1
 
 # Leading underscores on symbol names in object files
 # Valid options: YES/NO
@@ -99,11 +139,15 @@ BootingFromHc = @BootingFromHc@
 # rather than registerised code, i.e., disable the mangler?
 BootingFromUnregisterisedHc = @BootingFromUnregisterisedHc@
 
-# build the libs first if we're bootstrapping from .hc files
+# Build Order: we build Happy, Haddock and Alex before GHC if they are
+# in this source tree, just in case our GHC build depends on these
+# local builds rather than installed versions of the tools.
+#
+# Build the libs first if we're bootstrapping from .hc files.
 ifeq "$(BootingFromHc)" "YES"
-AllProjects = glafp-utils libraries hslibs ghc greencard happy hdirect hood nofib haddock alex
+AllProjects = glafp-utils happy alex haddock libraries hslibs ghc greencard hdirect hood nofib
 else
-AllProjects = glafp-utils ghc libraries hslibs greencard happy hdirect hood nofib haddock alex
+AllProjects = glafp-utils happy alex haddock ghc libraries hslibs greencard hdirect hood nofib
 endif
 
 #
@@ -124,6 +168,11 @@ ProjectsDontInstall = glafp-utils nofib
 IncludeTestDirsInBuild=NO
 
 #
+# Should the various project example directories be built?
+#
+IncludeExampleDirsInBuild=NO
+
+#
 # Which ways should SGML documents be built?
 # options are: dvi ps pdf html rtf
 #
@@ -181,11 +230,9 @@ GhcStage3HcOpts=
 # (way 'u') to get unregisterised code, but the default way will be
 # registerised.
 #
-# NOTE: this is not the same as building the compiler itself
-# unregisterised.  That's done by either (a) bootstrapping with a
-# compiler that was built with GhcUnregisterised=YES, or (b)
-# bootstrapping with a compiler that has way 'u' libraries, and the
-# flag '-unreg' is added to GhcHcOpts above.
+# NOTE: the stage1 compiler will be a registerised binary (assuming
+# the compiler you build with is generating registerised binaries), but
+# the stage2 compiler will be an unregisterised binary.
 #
 GhcUnregisterised=NO
 
@@ -327,7 +374,7 @@ GhcRtsThreaded=@ThreadedRts@
 
 # Build the Haskell Readline bindings?
 #
-GhcLibsWithReadline=@HaveReadlineHeaders@
+GhcLibsWithReadline=@GhcLibsWithReadline@
 
 # Libraries needed for linking with readline
 LibsReadline=@LibsReadline@
@@ -360,6 +407,10 @@ X_LIBS=@X_LIBS@
 #
 DotnetSupport=@DotnetSupport@
 
+# Build unix package?
+#
+GhcLibsWithUnix=@GhcLibsWithUnix@
+
 ################################################################################
 #
 #              happy project