Mac Port

Wolfgang Thaller
Mon, 2 Jun 2003 01:36:31 +0200

> Dear Wolfgang,
> I maintain the Hugs port for the darwinports system (a cousin of fink 
> and
> perhaps the successor to the *bsd ports system). I'd like to add a port
> for ghc-6.0. I tried to build it but ran into some problems.
> 1. configure doesn't pass the CPPFLAGS and LDFLAGS environment 
> variables
> to the haskell build. This means you can't have libreadline and libdl 
> in
> non-standard locations.

Grmpf... I know I don't like configure scripts. I prefer IDEs. Do you 
know how to fix it/have time to do it?
If not, would somebody else _PLEASE_ do that for us? (It wouldn't enjoy 
digging into the build system code to fix that; in fact, I would 
positively hate it).

> This is a problem for darwinports and fink because of their automatic 
> dependency
> management.

> 2. Even if I put symlinks to the above libraries in the standard 
> locations,
> I still get a build failure. This is building 6.0 using 5.04.3. 
> (5.04.3 was
> built from source successfully using your 5.04.2 binary.) The build 
> ends with
> [...]

Ahem, yes. I didn't have a chance to test GHC 6 in the last five days 
before the release, and, of course, the last commit broke the Mac OS X 
build. I have meanwhile committed a fix to CVS, but that was a day 
after the official relase for 6.0. If you check out the newest stable 
branch from CVS (or ask me to send you diffs tomorrow), it should work.
(That last commit made GHC quote all arguments it passes on to GHC; for 
Mac OS X, it passed "-framework HaskellSupport" instead of "-framework" 
"HaskellSupport". GCC doesn't report an error but it just ignores the 
former. Strange.)

The "HaskellSupport" framework (which is not used if it's not detected 
at configure time; there should really be a configure switch for that) 
is just an aggregation of libgmp and libdl packaged as a framework. I 
figured that would be easier for end users of Haskell programs, as 
libgmp is required for all Haskell programs, and libdl is used by the 
Posix library (and how do you install a dylib using the Finder?). For 
something like darwinports, it might be better to just rely on the gmp 
and dl libraries installed with darwinports, but that makes programs 
compiled using ghc dependent on darwinports, too.

And you just reminded me that I still haven't uploaded the 10 line 
shell script for creating the HaskellSupport.framework anywhere, 
because I could never figure out the appropriate place in CVS:

cd dlcompat-20020413
cp dlfcn.o ../
cd ../gmp-4.0.1
ld -r -d ./libs/libgmp.a -o ../libgmp.o
cd ..
ld -dylib -o HaskellSupport.framework/Versions/A/HaskellSupport 
libgmp.o dlfcn.o /usr/lib/dylib1.o -lSystem

OK, that's all for now...