X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=docs%2Fbuilding%2Fbuilding.xml;h=04dd999975bf12316f9098c17b658d6d022e3b2b;hb=22ebce60fcd1611a2a55267d79ee59f72e79e160;hp=1e2db413dc2b60db004344dcf8529d1939024d93;hpb=927a8f0f9e8aab135aa3ef12b463902f3f2e8141;p=ghc-hetmet.git diff --git a/docs/building/building.xml b/docs/building/building.xml index 1e2db41..04dd999 100644 --- a/docs/building/building.xml +++ b/docs/building/building.xml @@ -2752,8 +2752,8 @@ directive. - EXCLUDE_SRCS - EXCLUDE_SRCS + EXCLUDED_SRCS + EXCLUDED_SRCS Set to a list of source files (relative to the @@ -2771,7 +2771,7 @@ directive. EXTRA_SRCS - EXCLUDE_SRCS + EXTRA_SRCS Set to a list of extra source files (perhaps @@ -2952,6 +2952,58 @@ directive. ones in boilerplate.mk. + + Platform settings + Platform settings + + + There are three platforms of interest when building GHC: + + + + The build platform + + The platform on which we are doing this build. + + + + + The host platform + + The platform on which these binaries will run. + + + + + The target platform + + The platform for which this compiler will generate code. + + + + + These platforms are set when running the + configure script, using the + , , and + options. The mk/config.mk + file defines several symbols related to the platform settings (see + mk/config.mk for details). + + We don't currently support build & host being different, because + the build process creates binaries that are both run during the build, + and also installed. + + If host and target are different, then we are building a + cross-compiler. For GHC, this means 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 (see for details. + + More details on when to use BUILD, HOST or TARGET can be found in + the comments in config.mk. + + Pattern rules and options Pattern rules @@ -3540,20 +3592,19 @@ $ make install Bootstrapping GHC on a system without GHC already installed is achieved by taking the intermediate C files (known - as HC files) from a GHC compilation on a supported system to the - target machine, and compiling them using gcc to get a working - GHC. + as HC files) from another GHC compilation, compiling them using gcc to + get a working GHC. NOTE: GHC versions 5.xx were hard to bootstrap from C. We recommend using GHC 6.0.1 or later. HC files are platform-dependent, so you have to get a set - that were generated on similar hardware. There may be some - supplied on the GHC download page, otherwise you'll have to - compile some up yourself, or start from - unregisterised HC files - see . + that were generated on the same platform. There + may be some supplied on the GHC download page, otherwise you'll have to + compile some up yourself, or start from + unregisterised HC files - see . The following steps should result in a working GHC build with full libraries: @@ -3696,7 +3747,7 @@ $ ./configure --enable-hc-boot --enable-hc-boot-unregisterised $ cd T/ghc/includes -$ make ghcconfig.h +$ make @@ -3722,6 +3773,7 @@ $ ./configure GhcUnregisterised = YES GhcLibHcOpts = -O -fvia-C -keep-hc-files +GhcRtsHcOpts = -keep-hc-files GhcLibWays = SplitObjs = NO GhcWithNativeCodeGen = NO @@ -3755,20 +3807,19 @@ GhcBootLibs = YES Copy - T/ghc/includes/ghcconfig.h + T/ghc/includes/ghcautoconf.h, T/ghc/includes/DerivedConstants.h, and T/ghc/includes/GHCConstants.h to H/ghc/includes. Note that we are building on the host machine, using the - target machine's config.h file. This + target machine's configuration files. This is so that the intermediate C files generated here will be suitable for compiling on the target system. - - Touch ghcconfig.h, just to make - sure it doesn't get replaced during the build: -$ touch H/ghc/includes/ghcconfig.h + Touch the generated configuration files, just to make + sure they don't get replaced during the build: +$ touch H/ghc/includes/{ghcautoconf.h,DerivedConstants.h,GHCConstants.h}