GHC-6.4.1 on FreeBSD-amd64 still not ported

Wilhelm B. Kloke wb at
Sat Oct 15 18:09:32 EDT 2005

John Hornkvist <john at> schrieb:
> Simon Marlow <simonmar <at>> writes:
>> SIZEOF_mp_limb_t comes from DerivedConstants.h, and SIZEOF_VOID_P comes
>> from ghcautoconf.h (both in ghc/includes).  Both of these files should
>> be from the target system for a cross-compile; I strongly suspect that
>> one of them has been overwritten by the host version in your tree.
> Those files got overwritten several times for me, too, despite following the
> instructions... I ended up watching for them to get overwritten and copying 
> them back whenever that happened.

This is not really sufficient. I use "chflags uchg" to protect these
files. At least you you will be noticed, when the overwrite tries to happen.

> I've been trying to crosscompile for amd64-freebsd from Mac OS X, but 
> although I seem to get all the hc files, the ghc-pkg-inplace crashes, and 

Are you sure? The recommended procedure has a serious bug, which I
discovered about 30 minutes ago. You need to do "make boot" in the rebuilding
of ghc/lib/compat with the same flags as "make all", because libghccompat.a
is built in "make boot" and you won't get the .hc files otherwise.
Just look into ghc/lib/Compat subdirectories for .hc files.

> so does ghc-inplace, with the following backtrace:
> #0  0x00000000014f3ed0 in StgRun ()
> #1  0x00000000014f09b5 in schedule ()
> #2  0x00000000014f1386 in waitThread_ ()
> #3  0x00000000014f12aa in scheduleWaitThread ()
> #4  0x00000000014ee421 in rts_evalLazyIO ()
> #5  0x00000000014edccf in main ()
> Should I try to build again with debug symbols, or is that pointless for ghc 
> output?

This is  pointless, and typical for the sort of errors SM mentioned.
I have got dozens of these in the process.

Now let me report real progress. I have got it on FreeBSD-6.0-amd64 at last.

Here are the steps on the host system, which are needed IIRC:

cp ../../fptools-amd64/ghc-6.4.1/ghc/includes/{ghcautoconf.h,DerivedConstants.h,GHCConstants.h} ghc/includes
touch ghc/includes/{ghcautoconf.h,DerivedConstants.h,GHCConstants.h,mkDerivedConstants.c}
touch ghc/includes/{mkDerivedConstantsHdr,mkDerivedConstants.o,mkGHCConstants,mkGHCConstants.o}
touch ghc/includes/{ghcautoconf.h,DerivedConstants.h,GHCConstants.h}
chflags uchg  ghc/includes/{ghcautoconf.h,DerivedConstants.h,GHCConstants.h}
(cd glafp-utils && gmake boot && gmake)
(cd ghc && gmake boot && gmake)
(cd libraries && gmake boot && gmake)
(cd ghc/compiler && gmake boot stage=2 && gmake stage=2)
(cd ghc/lib/compat && gmake clean; rm .depend; gmake boot UseStage1=YES EXTRA_HC_OPTS='-O -fvia-C -keep-hc-files'; gmake -k UseStage1=YES EXTRA_HC_OPTS='-O -fvia-C -keep-hc-files')
(cd ghc/rts && gmake -k UseStage1=YES EXTRA_HC_OPTS='-O -fvia-C -keep-hc-files')
(cd ghc/utils && gmake clean; gmake -k UseStage1=YES EXTRA_HC_OPTS='-O -fvia-C -keep-hc-files')
gmake hc-file-bundle Project=Ghc

Don't forget to delete Linker.c (for ghci). The stage on teh host system
where the process fails jsut now is
> $MAKE -C libraries boot all
> Fake happy is not happy!

But ghc-inplace seems to work pretty good now on amd64.
Dipl.-Math. Wilhelm Bernhard Kloke
Institut fuer Arbeitsphysiologie an der Universitaet Dortmund
Ardeystrasse 67, D-44139 Dortmund, Tel. 0231-1084-257

More information about the Glasgow-haskell-users mailing list