From: panne Date: Wed, 2 Jun 2004 09:17:51 +0000 (+0000) Subject: [project @ 2004-06-02 09:17:51 by panne] X-Git-Tag: Initial_conversion_from_CVS_complete~1819 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=05336f493acbb8d77a3632901ddba2a4ab760c26;p=ghc-hetmet.git [project @ 2004-06-02 09:17:51 by panne] * Fixed some "screen" vs. "programlisting" * Don't use leading spaces in verbatim elements just for formatting purposes * Be extremely cautious with whitespace in verbatim elements to avoid strange empty leading/trailing lines. More investigation needed what's really going on here, this shouldn't be necessary... --- diff --git a/docs/building/building.sgml b/docs/building/building.sgml index ecac376..312106a 100644 --- a/docs/building/building.sgml +++ b/docs/building/building.sgml @@ -138,15 +138,11 @@ If you set $CVSROOT in a shell script, be sure not to have any trailing spaces on that line, otherwise CVS will respond with a perplexing message like - - /cvs : no such repository - + /cvs : no such repository Run the command - - $ cvs login - +$ cvs login The password is simply cvs. This sets up a file in your home directory called .cvspass, which squirrels away the @@ -184,9 +180,7 @@ Generate a DSA private-key/public-key pair, thus: - - $ ssh-keygen -d - +$ ssh-keygen -d (ssh-keygen comes with ssh.) Running ssh-keygen -d creates the private and public keys in @@ -198,9 +192,7 @@ you have Version 2 ssh installed; it will fail harmlessly otherwise. If you only have Version 1 you can instead generate an RSA key pair using plain - - $ ssh-keygen - +$ ssh-keygen Doing so creates the private and public RSA keys in $HOME/.ssh/identity and @@ -211,12 +203,10 @@ 2 ssh to use the Version 1 protocol by creating $HOME/config with the following in it: - - BatchMode Yes +BatchMode Yes - Host cvs.haskell.org - Protocol 1 - +Host cvs.haskell.org +Protocol 1 In both cases, ssh-keygen will ask for a passphrase. The @@ -326,12 +316,10 @@ Put the following in $HOME/.cvsrc: - - checkout -P - release -d - update -P - diff -u - +checkout -P +release -d +update -P +diff -u These are the default options for the specified CVS commands, @@ -391,9 +379,7 @@ methods above. The Approved Way to check out a source tree is as follows: - - $ cvs checkout fpconfig - +$ cvs checkout fpconfig At this point you have a new directory called fptools which contains the basic stuff @@ -401,34 +387,26 @@ some other junk. [Windows users.] The following messages appear to be harmless: - -setsockopt IPTOS_LOWDELAY: Invalid argument -setsockopt IPTOS_THROUGHPUT: Invalid argument - +setsockopt IPTOS_LOWDELAY: Invalid argument +setsockopt IPTOS_THROUGHPUT: Invalid argument You can call the fptools directory whatever you like, CVS won't mind: - - $ mv fptools directory - +$ mv fptools directory NB: after you've read the CVS manual you might be tempted to try - - $ cvs checkout -d directory fpconfig - +$ cvs checkout -d directory fpconfig instead of checking out fpconfig and then renaming it. But this doesn't work, and will result in checking out the entire repository instead of just the fpconfig bit. - - $ cd directory - $ cvs checkout ghc hslibs libraries - +$ cd directory +$ cvs checkout ghc hslibs libraries The second command here checks out the relevant modules you want to work on. For a GHC build, for instance, @@ -465,9 +443,7 @@ setsockopt IPTOS_THROUGHPUT: Invalid argument Test them. You can see exactly what changes you've made by using the cvs diff command: - -$ cvs diff - +$ cvs diff lists all the changes (using the diff command) in and below the current directory. In emacs, C-c C-v = runs @@ -486,10 +462,8 @@ $ cvs diff Before checking in a change, you need to update your source tree: - -$ cd fptools -$ cvs update - +$ cd fptools +$ cvs update This pulls in any changes that other people have made, and merges them with yours. If there are any conflicts, CVS will tell you, and you'll have to resolve them before you @@ -509,9 +483,7 @@ $ cvs update When you're happy that your change isn't going to break anything, check it in. For a one-file change: - -$ cvs commit filename - +$ cvs commit filename CVS will then pop up an editor for you to enter a "commit message", this is just a short description @@ -528,16 +500,12 @@ $ cvs commit filename way I find easiest. First type the commit message into a temporary file. Then either - -$ cvs commit -F commit-message file_1 .... file_n - +$ cvs commit -F commit-message file_1 .... file_n or, if nothing else has changed in this part of the source tree, - -$ cvs commit -F commit-message directory - +$ cvs commit -F commit-message directory where directory is a common parent directory for all your changes, and @@ -567,16 +535,14 @@ $ cvs commit -F commit-message directory So, to avoid a lot of hassle, follow this recipe for updating your tree: - -$ cd fptools +$ cd fptools $ cvs update -P 2>&1 | tee log Look at the log file, and fix any conflicts (denoted by a C in the first column). New directories may have appeared in the repository; CVS doesn't check these out by default, so to get new directories you have to explicitly do - -$ cvs update -d +$ cvs update -d in each project subdirectory. Don't do this at the top level, because then all the projects will be checked out. @@ -585,17 +551,13 @@ $ cvs update -d tree you have pointing at this source tree, you need to update the links in case any new files have appeared: - -$ cd build-tree -$ lndir source-tree - +$ cd build-tree +$ lndir source-tree Some files might have been removed, so you need to remove the links pointing to these non-existent files: - -$ find . -xtype l -exec rm '{}' \; - +$ find . -xtype l -exec rm '{}' \; To be really safe, you should do @@ -640,11 +602,9 @@ $ find . -xtype l -exec rm '{}' \; So, to check out a fresh GHC 4.06 tree you would do: - - $ cvs co -r ghc-4-06 fpconfig - $ cd fptools - $ cvs co -r ghc-4-06 ghc hslibs - +$ cvs co -r ghc-4-06 fpconfig +$ cd fptools +$ cvs co -r ghc-4-06 ghc hslibs @@ -678,26 +638,20 @@ $ find . -xtype l -exec rm '{}' \; checked-out fptools tree containing just ghc, and you want to add nofib to it: - -$ cd fptools -$ cvs checkout nofib - +$ cd fptools +$ cvs checkout nofib or: - -$ cd fptools -$ cvs update -d nofib - +$ cd fptools +$ cvs update -d nofib (the -d flag tells update to create a new directory). If you just want part of the nofib suite, you can do - -$ cd fptools -$ cvs checkout nofib/spectral - +$ cd fptools +$ cvs checkout nofib/spectral This works because nofib is a module in its own right, and spectral is a subdirectory of @@ -1496,8 +1450,7 @@ $ cvs checkout nofib/spectral $ autoreconf $ ./configure $ make -$ make install - +$ make install For GHC, this will do a 2-stage bootstrap build of the compiler, with profiling libraries, and install the @@ -1666,9 +1619,7 @@ $ make install Change directory to $(FPTOOLS_TOP) and issue the command - -autoreconf - +autoreconf autoreconf (with no arguments). This GNU program (recursively) converts $(FPTOOLS_TOP)/configure.ac and @@ -1700,9 +1651,7 @@ autoreconf Runs the newly-created configure script, thus: - -./configure args - +./configure args configure's mission is to scurry round your computer working out what architecture it has, @@ -1844,9 +1793,7 @@ autoreconf For example, config.mk.in contains the definition: - -GhcHcOpts=-O -Rghc-timing - +GhcHcOpts=-O -Rghc-timing The accompanying comment explains that this is the list of flags passed to GHC when building GHC itself. For doing @@ -1856,9 +1803,7 @@ GhcHcOpts=-O -Rghc-timing or, if you prefer, - -GhcHcOpts += -DDEBUG - +GhcHcOpts += -DDEBUG GNU make allows existing definitions to have new text appended using the “+=” @@ -1869,9 +1814,7 @@ GhcHcOpts += -DDEBUG lot quicker), you can just override GhcLibHcOpts altogether: - -GhcHcOpts=-DDEBUG -Rghc-timing - +GhcHcOpts=-DDEBUG -Rghc-timing When reading config.mk.in, remember that anything between “@...@” signs is going to be substituted @@ -1880,9 +1823,7 @@ GhcHcOpts=-DDEBUG -Rghc-timing you want, but you need to be a bit surer what you are doing. For example, there's a line that says: - -TAR = @TarCmd@ - +TAR = @TarCmd@ This defines the Make variables TAR to the pathname for a tar that @@ -1890,9 +1831,7 @@ TAR = @TarCmd@ own pet tar you want to use instead, that's fine. Just add this line to mk/build.mk: - -TAR = mytar - +TAR = mytar You do not have to have a mk/build.mk file at all; if you don't, @@ -1932,10 +1871,8 @@ TAR = mytar (Optional) Use lndir or mkshadowdir to create a build tree. - -$ cd myfptools -$ mkshadowdir . /scratch/joe-bloggs/myfptools-sun4 - +$ cd myfptools +$ mkshadowdir . /scratch/joe-bloggs/myfptools-sun4 (N.B. mkshadowdir's first argument is taken relative to its second.) You probably want to give @@ -1948,18 +1885,14 @@ $ mkshadowdir . /scratch/joe-bloggs/myfptools-sun4 Change directory to the build tree. Everything is going to happen there now. - -$ cd /scratch/joe-bloggs/myfptools-sun4 - +$ cd /scratch/joe-bloggs/myfptools-sun4 Prepare for system configuration: - -$ autoreconf - +$ autoreconf (You can skip this step if you are starting from a source distribution, and you already have @@ -1970,9 +1903,7 @@ $ autoreconf Do system configuration: - -$ ./configure - +$ ./configure Don't forget to check whether you need to add any arguments to configure; for example, a @@ -1985,9 +1916,7 @@ $ ./configure adding definitions for your desired configuration options. - -$ emacs mk/build.mk - +$ emacs mk/build.mk @@ -2273,9 +2202,7 @@ $ emacs mk/build.mk generated .depend file will contain the dependency: - -Foo.o : Baz.hi - +Foo.o : Baz.hi which says that the object file Foo.o depends on the interface file @@ -2342,9 +2269,7 @@ Foo.o : Baz.hi make is going to rebuild everything anyway, the following hack may be useful: - -gmake FAST=YES - +gmake FAST=YES This tells the make system to ignore dependencies and just build what you tell it to. In other words, it's equivalent to @@ -2385,7 +2310,7 @@ gmake FAST=YES the contents of any make variable in the context of the current Makefile: -$ make show VALUE=HS_SRCS +$ make show VALUE=HS_SRCS where you can replace HS_SRCS with the name of any variable you wish to see the value of. @@ -2413,8 +2338,7 @@ gmake FAST=YES Makefile, minimal - -# Makefile for fptools project "small" +# Makefile for fptools project "small" TOP = .. include $(TOP)/mk/boilerplate.mk @@ -2422,8 +2346,7 @@ include $(TOP)/mk/boilerplate.mk SRCS = $(wildcard *.lhs) $(wildcard *.c) HS_PROG = small -include $(TOP)/target.mk - +include $(TOP)/target.mk this Makefile has three sections: @@ -2458,9 +2381,7 @@ directive. directory in which the boilerplate.mk file is. It is not OK to simply say - -include ../mk/boilerplate.mk # NO NO NO - +include ../mk/boilerplate.mk # NO NO NO Why? Because the boilerplate.mk @@ -2589,8 +2510,7 @@ include ../mk/boilerplate.mk # NO NO NO rare.) To give you the idea, here's part of the directory structure for the (rather large) GHC project: - -$(FPTOOLS_TOP)/ghc/ +$(FPTOOLS_TOP)/ghc/ Makefile mk/ boilerplate.mk @@ -2605,8 +2525,7 @@ $(FPTOOLS_TOP)/ghc/ Makefile parser/...source files for parser... renamer/...source files for renamer... - ...etc... - + ...etc... The sub-directories docs, driver, compiler, and @@ -2715,9 +2634,7 @@ $(FPTOOLS_TOP)/ghc/ augment them. For example, a Makefile might say: - -SRC_HC_OPTS += -O - +SRC_HC_OPTS += -O thereby adding “” to the end of @@ -2747,10 +2664,8 @@ SRC_HC_OPTS += -O target.mk has a rule that looks like this: - -$(HS_PROG) : $(OBJS) - $(HC) $(LD_OPTS) $< -o $@ - +$(HS_PROG) : $(OBJS) + $(HC) $(LD_OPTS) $< -o $@ If this rule was in boilerplate.mk then @@ -3052,11 +2967,9 @@ $(HS_PROG) : $(OBJS) Almost all the rules look something like this: - -%.o : %.c +%.o : %.c $(RM) $@ - $(CC) $(CC_OPTS) -c $< -o $@ - + $(CC) $(CC_OPTS) -c $< -o $@ Here's how to understand the rule. It says that something.o (say @@ -3084,10 +2997,8 @@ $(HS_PROG) : $(OBJS) defined in mk/opts.mk. Almost all of them are defined like this: - -CC_OPTS = \ - $(SRC_CC_OPTS) $(WAY$(_way)_CC_OPTS) $($*_CC_OPTS) $(EXTRA_CC_OPTS) - +CC_OPTS = \ + $(SRC_CC_OPTS) $(WAY$(_way)_CC_OPTS) $($*_CC_OPTS) $(EXTRA_CC_OPTS) The four variables from which CC_OPTS is built have the following @@ -3133,9 +3044,7 @@ CC_OPTS = \ extra options to pass to all C compilations. This is intended for command line use, thus: - -gmake libHS.a EXTRA_CC_OPTS="-v" - +gmake libHS.a EXTRA_CC_OPTS="-v" @@ -3241,10 +3150,8 @@ gmake libHS.a EXTRA_CC_OPTS="-v" All of these rules are “double-colon” rules, thus - -install :: $(HS_PROG) - ...how to install it... - +install :: $(HS_PROG) + ...how to install it... GNU make treats double-colon rules as separate entities. If there are several double-colon rules for @@ -3385,10 +3292,8 @@ install :: $(HS_PROG) file will match. The key pattern rules (in suffix.mk) look like this: - -%.$(way_)o : %.lhs - $(HC) $(HC_OPTS) $< -o $@ - +%.$(way_)o : %.lhs + $(HC) $(HC_OPTS) $< -o $@ Neat, eh? @@ -3399,9 +3304,7 @@ install :: $(HS_PROG) to build files related to a particular way in the current directory. eg. - -$ make way=p - +$ make way=p will build files for the profiling way only in the current directory. @@ -3515,10 +3418,8 @@ $ make way=p FreeBSD mirror site). To use the ports tree, do this: - - $ cd /usr/ports/textproc/docproj - $ make install - +$ cd /usr/ports/textproc/docproj +$ make install This installs the FreeBSD documentation project tools, which includes everything needed to format the GHC documentation. @@ -3553,9 +3454,7 @@ $ make way=p dsssl subdirectory. (If you get the error: - -! LaTeX Error: Unknown option implicit=false' for package hyperref'. - +! LaTeX Error: Unknown option implicit=false' for package hyperref'. your version of hyperref is out of date; download it from CTAN @@ -3631,9 +3530,7 @@ $ make way=p To build documentation in a certain format, you can say, for example, - -$ make html - +$ make html to build HTML documentation below the current directory. The available formats are: dvi, @@ -3654,9 +3551,7 @@ $ make html to a list of them. For example, in build.mk you might have a line: - -SGMLDocWays = html ps - +SGMLDocWays = html ps This will cause the documentation to be built in the requested formats as part of the main build (the default is not to build @@ -3668,9 +3563,7 @@ SGMLDocWays = html ps To install the documentation, use: - -$ make install-docs - +$ make install-docs This will install the documentation into $(datadir) (which defaults to @@ -3760,9 +3653,7 @@ $ make install-docs command will execute the whole build process (it won't install yet): - -foo% distrib/hc-build --prefix=dir - +foo% distrib/hc-build --prefix=dir --hc-build By default, the installation directory is @@ -3775,9 +3666,7 @@ foo% distrib/hc-build --prefix=dir build process, you can install the resulting system, as normal, with - -foo% make install - +foo% make install @@ -3861,10 +3750,8 @@ foo% make install - -$ cd T -$ ./configure --enable-hc-boot --enable-hc-boot-unregisterised - +$ cd T +$ ./configure --enable-hc-boot --enable-hc-boot-unregisterised You might need to update configure.in to recognise the new @@ -3874,10 +3761,8 @@ $ ./configure --enable-hc-boot --enable-hc-boot-unregisterised - -$ cd T/ghc/includes -$ make config.h - +$ cd T/ghc/includes +$ make config.h @@ -3892,10 +3777,8 @@ $ make config.h - -$ cd H -$ ./configure - +$ cd H +$ ./configure @@ -3903,16 +3786,14 @@ $ ./configure H/mk/build.mk, with the following contents: - -GhcUnregisterised = YES +GhcUnregisterised = YES GhcLibHcOpts = -O -H32m -keep-hc-files GhcLibWays = SplitObjs = NO GhcWithNativeCodeGen = NO GhcWithInterpreter = NO GhcStage1HcOpts = -O -H32m -fasm -GhcStage2HcOpts = -O -fvia-C -keep-hc-files - +GhcStage2HcOpts = -O -fvia-C -keep-hc-files @@ -3951,48 +3832,37 @@ GhcStage2HcOpts = -O -fvia-C -keep-hc-files Touch config.h, just to make sure it doesn't get replaced during the build: - -$ touch H/ghc/includes/config.h +$ touch H/ghc/includes/config.h Now build the compiler: - -$ cd H/glafp-utils && make boot && make -$ cd H/ghc && make boot && make - +$ cd H/glafp-utils && make boot && make +$ cd H/ghc && make boot && make Don't worry if the build falls over in the RTS, we don't need the RTS yet. - -$ cd H/libraries -$ make boot && make - +$ cd H/libraries +$ make boot && make - -$ cd H/ghc -$ make boot stage=2 && make stage=2 - +$ cd H/ghc +$ make boot stage=2 && make stage=2 - -$ cd H/ghc/utils +$ cd H/ghc/utils $ make clean $ make -k HC=H/ghc/compiler/stage1/ghc-inplace \ - EXTRA_HC_OPTS='-O -fvia-C -keep-hc-files' - + EXTRA_HC_OPTS='-O -fvia-C -keep-hc-files' - -$ cd H -$ make hc-file-bundle Project=Ghc - +$ cd H +$ make hc-file-bundle Project=Ghc @@ -4012,9 +3882,7 @@ $ make hc-file-bundle Project=Ghc script in distrib/hc-build, and is described in . - -$ ./distrib/hc-build --enable-hc-boot-unregisterised - +$ ./distrib/hc-build --enable-hc-boot-unregisterised However, since this is a bootstrap on a new machine, the automated process might not run to completion the @@ -4033,14 +3901,12 @@ $ ./distrib/hc-build --enable-hc-boot-unregisterised to check that the bootstrapped compiler is generating working binaries: - -$ cat >hello.hs +$ cat >hello.hs main = putStrLn "Hello World!\n" ^D $ T/ghc/compiler/ghc-inplace hello.hs -o hello $ ./hello -Hello World! - +Hello World! Once you have the unregisterised compiler up and running, you can use it to start a registerised port. The @@ -4220,9 +4086,7 @@ of choice). The best way around it is to say - -export TMPDIR=<dir> - +export TMPDIR=<dir> in your build.mk file. Then GHC and the other fptools programs will use the appropriate directory @@ -4254,11 +4118,9 @@ incompatible pointer type” out of GCC. Harmless. Similarly, archiving warning messages like the following are not a problem: - -ar: filename GlaIOMonad__1_2s.o truncated to GlaIOMonad_ +ar: filename GlaIOMonad__1_2s.o truncated to GlaIOMonad_ ar: filename GlaIOMonad__2_2s.o truncated to GlaIOMonad_ -... - +... @@ -4303,10 +4165,8 @@ and try again: gmake. (see for Alternatively, just cut to the chase: - -% cd ghc/compiler -% make EXTRA_HC_OPTS=-optCrts-M128M - +% cd ghc/compiler +% make EXTRA_HC_OPTS=-optCrts-M128M @@ -4330,13 +4190,11 @@ this bug also suggests that you have an old GCC. You may need to re-ranlibranlib your libraries (on Sun4s). - -% cd $(libdir)/ghc-x.xx/sparc-sun-sunos4 +% cd $(libdir)/ghc-x.xx/sparc-sun-sunos4 % foreach i ( `find . -name '*.a' -print` ) # or other-shell equiv... ? ranlib $i ? # or, on some machines: ar s $i -? end - +? end We'd be interested to know if this is still necessary. @@ -4352,18 +4210,14 @@ a bit from one Unix to another. One particular gotcha is macro calls like this: - -SLIT("Hello, world") - +SLIT("Hello, world") Some cpps treat the comma inside the string as separating two macro arguments, so you get - -:731: macro `SLIT' used with too many (2) args - +:731: macro `SLIT' used with too many (2) args Alas, cpp doesn't tell you the offending file! @@ -4504,9 +4358,7 @@ MSYS programs understand /bin, /usr/bin - foogle -B/c/tmp/baz - +foogle -B/c/tmp/baz the MSYS shell will actually call foogle with argument -Bc:/tmp/baz. @@ -4523,17 +4375,13 @@ Cygwin programs have a more complicated mount table, and map the lettered drives In the source code you'll find various ifdefs looking like: - - #ifdef mingw32_HOST_OS - ...blah blah... - #endif - +#ifdef mingw32_HOST_OS + ...blah blah... +#endif and - - #ifdef mingw32_TARGET_OS - ...blah blah... - #endif - +#ifdef mingw32_TARGET_OS + ...blah blah... +#endif These macros are set by the configure script (via the file config.h). Which is which? The criterion is this. In the ifdefs in GHC's source code: @@ -4716,9 +4564,7 @@ stage of Cygwin's installation dialogue, until the view says "Full". The defaul Set MAKE_MODE to UNIX. If you don't do this you get very weird messages when you type make, such as: - -/c: /c: No such file or directory - +/c: /c: No such file or directory @@ -4817,10 +4663,8 @@ you install Cygwin. (If not, the installer lets you update easily.) Look for < seem to lock up bash entirely if they try to get user input (e.g. if they ask for a password). To solve this, start up cmd.exe and run it as follows: - - c:\tmp> set CYGWIN32=tty - c:\tmp> c:/user/local/bin/ssh-keygen1 - +c:\tmp> set CYGWIN32=tty +c:\tmp> c:/user/local/bin/ssh-keygen1 (Cygwin-only problem, I think.) @@ -4830,9 +4674,7 @@ To determine your home directory ssh first looks in there with your userid, it'll use that entry to determine your home directory, ignoring the setting of the environment variable $HOME. If the home directory is bogus, ssh fails horribly. The best way to see what is going on is to say - - ssh -v cvs.haskell.org - +ssh -v cvs.haskell.org which makes ssh print out information about its activity. You can fix this problem, either by correcting the home-directory field in @@ -4896,11 +4738,9 @@ you need to add upon completion. Install an executable Happy, from http://www.haskell.org/happy. Happy is a parser generator used to compile the Haskell grammar. Under MSYS or Cygwin you can easily build it from the source distribution using - - ./configure - make - make install - +./configure +make +make install This should install it in /usr/local/bin (which maps to c:/msys/1.0/local/bin on MSYS). Make sure the installation directory is in your @@ -4969,17 +4809,14 @@ mk/config.h is unchanged configuring in ghc running /bin/sh ./configure --cache-file=.././config.cache --srcdir=. ./configure: ./configure: No such file or directory -configure: error: ./configure failed for ghc - +configure: error: ./configure failed for ghc autoreconf seems to create the file configure read-only. So if you need to run autoreconf again (which I sometimes do for safety's sake), you get - -/usr/bin/autoconf: cannot create configure: permission denied - +/usr/bin/autoconf: cannot create configure: permission denied Solution: delete configure first. @@ -4988,9 +4825,7 @@ Solution: delete configure first. After autoreconf run ./configure in fptools/ thus: - - ./configure --host=i386-unknown-mingw32 --with-gcc=c:/mingw/bin/gcc - +./configure --host=i386-unknown-mingw32 --with-gcc=c:/mingw/bin/gcc This is the point at which you specify that you are building GHC-mingw (see ). @@ -5006,8 +4841,7 @@ say --with-gcc=/mingw/bin/gcc, it'll be interpreted as time it tries to invoke it. Worse, the failure comes with no error message whatsoever. GHC simply fails silently when first invoked, typically leaving you with this: - -make[4]: Leaving directory `/cygdrive/e/fptools-stage1/ghc/rts/gmp' +make[4]: Leaving directory `/cygdrive/e/fptools-stage1/ghc/rts/gmp' ../../ghc/compiler/ghc-inplace -optc-mno-cygwin -optc-O -optc-Wall -optc-W -optc-Wstrict-prototypes -optc-Wmissing-prototypes -optc-Wmissing-declarations -optc-Winline -optc-Waggregate-return @@ -5018,17 +4852,14 @@ make[4]: Leaving directory `/cygdrive/e/fptools-stage1/ghc/rts/gmp' make[2]: *** [Adjustor.o] Error 1 make[1]: *** [all] Error 1 make[1]: Leaving directory `/cygdrive/e/fptools-stage1/ghc' -make: *** [all] Error 1 - +make: *** [all] Error 1 Be warned! If you want to build GHC-cygwin () you'll have to do something more like: - - ./configure --with-gcc=...the Cygwin gcc... - +./configure --with-gcc=...the Cygwin gcc... @@ -5040,9 +4871,7 @@ can be really confusing. You almost certainly want to set - - SplitObjs = NO - +SplitObjs = NO in your build.mk configuration file (see ). This tells the build system not to split each library into a myriad of little object files, one for each function. Doing so reduces binary sizes for statically-linked binaries, but on Windows