X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=docs%2Fbuilding%2Fbuilding.xml;h=8f3f3f44ba7f782a06615353f4f5206316d29ab4;hb=07d8f75bfc78c4f1acb33b3d19b5356a55d75c6e;hp=3affc087ab5df3620053ad25d1cb4456ae6b0bb3;hpb=31b36891326ccace3f9d7d29ae036628069ce7da;p=ghc-hetmet.git
diff --git a/docs/building/building.xml b/docs/building/building.xml
index 3affc08..8f3f3f4 100644
--- a/docs/building/building.xml
+++ b/docs/building/building.xml
@@ -3650,6 +3650,13 @@ $ make install
Cross-compiling to produce an unregisterised GHC
+ NOTE! These instructions apply to GHC 6.4 and (hopefully)
+ later. If you need instructions for an earlier version of GHC, try
+ to get hold of the version of this document that was current at the
+ time. It should be available from the appropriate download page on
+ the GHC homepage.
+
In this section, we explain how to bootstrap GHC on a
new platform, using unregisterised intermediate C files. We
haven't put a great deal of effort into automating this
@@ -3689,7 +3696,7 @@ $ ./configure --enable-hc-boot --enable-hc-boot-unregisterised
$ cd T/ghc/includes
-$ make config.h
+$ make ghcconfig.h
@@ -3714,13 +3721,15 @@ $ ./configure
with the following contents:GhcUnregisterised = YES
-GhcLibHcOpts = -O -H32m -keep-hc-files
+GhcLibHcOpts = -O -fvia-C -keep-hc-files
GhcLibWays =
SplitObjs = NO
GhcWithNativeCodeGen = NO
GhcWithInterpreter = NO
-GhcStage1HcOpts = -O -H32m -fasm
+GhcStage1HcOpts = -O -fasm
GhcStage2HcOpts = -O -fvia-C -keep-hc-files
+SRC_HC_OPTS += -H32m
+GhcBootLibs = YES
@@ -3746,7 +3755,7 @@ GhcStage2HcOpts = -O -fvia-C -keep-hc-files
Copy
- T/ghc/includes/config.h
+ T/ghc/includes/ghcconfig.h
to
H/ghc/includes.
Note that we are building on the host machine, using the
@@ -3757,9 +3766,9 @@ GhcStage2HcOpts = -O -fvia-C -keep-hc-files
- Touch config.h, just to make
+ Touch ghcconfig.h, just to make
sure it doesn't get replaced during the build:
-$ touch H/ghc/includes/config.h
+$ touch H/ghc/includes/ghcconfig.h
@@ -3776,10 +3785,10 @@ $ make boot && make
-$ cd H/ghc
+$ cd H/ghc/compiler
$ make boot stage=2 && make stage=2
-
+
$ cd H/ghc/utils
$ make clean
@@ -4317,6 +4326,24 @@ Cygwin programs have a more complicated mount table, and map the lettered drives
+Crippled ld
+
+
+It turns out that on both Cygwin and MSYS, the ld has a
+limit of 32kbytes on its command line. Especially when using split object
+files, the make system can emit calls to ld with thousands
+of files on it. Then you may see something like this:
+
+(cd Graphics/Rendering/OpenGL/GL/QueryUtils_split && /mingw/bin/ld -r -x -o ../QueryUtils.o *.o)
+/bin/sh: /mingw/bin/ld: Invalid argument
+
+The solution is either to switch off object file splitting (set
+ to NO in your
+build.mk),
+or to make the module smaller.
+
+
+
Host System vs Target System
@@ -4424,7 +4451,11 @@ Run both executables (in the order given above) to install them. I put them in
Set the following environment variables
- PATH: add c:/msys/1.0/bin to your path. (Of course, the version number may differ.)
+ PATH: add c:/msys/1.0/bin and
+ c:/msys/1.0/local/bin
+ to your path. (Of course, the version number may differ.)
+ MSYS mounts the former as both /bin and
+ /usr/bin and the latter as /usr/local/bin.
HOME: set to your home directory (e.g. c:/userid).
@@ -4695,7 +4726,7 @@ Make sure the installation directory is in your
- Install Alex. This can be done by building from the
+ Install an executable Alex. This can be done by building from the
source distribution in the same way as Happy. Sources are
available from http://www.haskell.org/alex.
@@ -4708,7 +4739,13 @@ Just pick up a mingw bundle at
http://www.mingw.org/.
We install it in c:/mingw.
-Do not add any of the mingw binaries to your path.
+
+On MSYS, add c:/mingw/bin to your PATH. MSYS does not provide gcc,
+ld, ar, and so on, because it just uses the MinGW ones. So you need them
+in your path.
+
+
+On Cygwin, do not add any of the mingw binaries to your path.
They are only going to get used by explicit access (via the --with-gcc flag you
give to configure later). If you do add them to your path
you are likely to get into a mess because their names overlap with Cygwin binaries.