Clemens Fruhwirth wrote:
Hi everyone,
I'm happy to announce that dynamic library support is back and shows
promissing results with the testsuite. At the beginning of the year we
had a similar situation but then due to my lack of time, I was not
able to complete the whole thing and it started bitrotting. But in the
last two weeks I got most build errors fixed.
The situation at the moment is
"./configure --enable-shared" gives you stage2 compiler that makes use
of the ghc package in form of a shared lib. So it replaces the static
compiler. With previous incarnations of the build system we had the
possibility to build a "ghc" binary which was the static compiler, and
a "ghc_dyn" binary which was the same compiler but linked to a shared
lib. But now the situation is different, and either "ghc" is produced
shared or not.
This makes it difficult to integrate into the regular testsuite, as
you can't test shared AND static, you can only test shared OR
static. We can either:
But this is only how GHC itself is linked, right? You can still compile
individual tests both static and dynamically linked using either -dynamic
or -static.
1. add a new build bot that specifically tests shared libs, that means
calls ./configure --enable-shared.
That seems sensible. We could add it to one of the existing HEAD builds.
It would build both shared and static libraries, and test both.
Do installation and binary distributions work yet? The issue with these is
that we want the shared libraries to be installed in $libdir, not
$libdir/ghc-6.11.
2. hack support for also producing "_dyn" binary into Cabal (probably
also "_p_dyn" that is shared libs + profiling mode). Then add "dyn"
test way (iirc the testsuite should still be able to do that,
without much trouble). I personally think that's the easiest.
3. (brave) turn on --enable-shared by default on certain archs. To
form an opinion about this option one should probably have a look
at the set of regressions we have at the moment
http://hackage.haskell.org/trac/ghc/ticket/1876 . What's
interesting about them is that most of the ghci suite works, but
only in some isolated cases we see failures. We probably need
someone with RTS-fu to have a look at that, as my gdb debugging
session ended without any insights into the problem.
I'll try to get to that at some point (busy working on parallel stuff at
the moment).
The trouble with making --enable-shared the default is that it entails
building each library twice, which will slow down validate. I'd like it to
be possible to build *just* shared libraries, that is ./configure
--enable-shared --disable-static.
Also we need to clear up the situation with mixing shared/static libraries
in an executable (what happens and on which platforms?) and whether Cabal
defaults to producing shared and/or static libraries.
Cheers,
Simon
_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc