
I see this doesn't work: convert_libraries uses config.h and options.h, which are generated by configure. But that makes the source distribution architecture-dependent, and hardwires the original setting of USE_DOUBLE_PRECISION, both undesirable.
I'd like to get future versions of Hugs to use float for Float and double for Double - but that isn't going to affect this release.
Only the hierarchical libraries are affected, specifically
Foreign.C.Error Foreign.C.Types Foreign.C.TypesISO Foreign.Storable
It seems the #include is superfluous in the first one, but what to do about the other three?
My gut feeling is that the libraries will acquire more ifdefs as time goes on so trying to eliminate the ones we have is only a short-term solution. This suggests that we should distribute the raw libraries with Hugs and have the user run convert_libraries (probably invoked through the Makefile which is probably a better way to run things anyway). The problem is that this won't work on Windows. If they have a C compiler, then they have cpp but they don't necessarily have a usable shell. If we were starting from scratch, we could consider rewriting convert_libraries as a Makefile something along the lines of: CVT_LIBRARIES = <huge list here> NOCVT_LIBRARIES = <and another long list> HSLIBS_LIBRARIES = <more still> libraries_cvt: $(CVT_LIBRARIES) helper_cvt ... libraries_nocvt: $(NOCVT_LIBRARIES) helper_nocvt ... with the idea that it would be easy enough to provide Win32-compatible helper functions. But I don't think we want to get into this now. So I'm kind of stuck. -- Alastair