Hi all, I'm wondering if anybody has had any success building shared objects from Haskell code on x86 Linux and/or Sparc Solaris.
I have some Haskell source which I am trying to integrate into a C/C++ library which I am maintaining at the same time. The performance of the Haskell code is not an issue. The key limitation is that I need to be able to package the whole thing as a single .so object file. Put simply, I have a Haskell module which exports one of its functions via the FFI, using the ccall calling convention. I need to compile that module, and then link the resulting object, along with some other objects, into a single shared object. It seems there is no straightforward way to achieve this with any Haskell implementation on anything other than windows (by building a DLL.) A few possibilties have occurred to me, and I'd be interested to know if anybody has tried any of these with any success. 1. Use GHC with unregisterised libraries that have been compiled by gcc using -fPIC. I haven't been able to figure out how to actually build unregisterised libraries. I tried compiling the GHC 6.4.2 sources (using GHC 6.4.2) with `GhcUnregisterised = YES' in mk/build.mk, only to have the assembler fail. Has anyone else tried this recently? I sent a message to the GHC-users mailing list with more details, but haven't had a response yet. 2. Use nhc98 with libraries and run-time compiled with gcc and -fPIC. I have no idea whether this is feasible. 3. Link in a version of yhc's yhi interpreter, compiled with -fPIC. The shared object would have to produce some temporary files containing all of the pre-compiled byte code for the interpreter to read and execute. (We're already assuming that the platform the system runs on is completely trustworthy.) 4. Alternative 3 might also be possible using Hugs. I'm not sure that I can rely on any of these approaches - provided I can even get any of them working. Does anybody know of a good solution to this problem? The alternative is to admit defeat and rewrite all the Haskell code as C++, which is pretty depressing. Regards, Jeremy ____________________________________________________ Do you Yahoo!? Listen to your personal radio station on Yahoo!7 Music http://au.music.yahoo.com/launchcast/setup.asp _______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell