[Haskell-cafe] Porting GHC to OSX86?

Scott Weeks weeksie at twelvestone.com
Wed May 10 17:31:47 EDT 2006

Thanks for your response, I'll follow your saga and hopefully learn a  
bit more about GHC's guts in the process.

On 07/05/2006, at 4:05 AM, Reilly Hayes wrote:

> You'll get a better response to this on the glasgow-haskell-users  
> list.  I'm cross-posting my reply.
> I'm brand new to hacking on GHC, but I've been working on this in  
> my pitifully meagre spare time.  The actual expert is Wolfgang  
> Thaller, but he doesn't seem to be around the lists lately.  I was  
> able to generate hc files on a 386 linux box (actually on a  
> Parallels virtual machine on my mac, as my linux boxen all run 64  
> bit linuces).    I'll share my findings so far:
> 1) STABLE does not have the appropriate code in the Mangler to deal  
> with Darwin/86.  I've been playing with various versions of HEAD.
> 2) HEAD has gone through a major revision to the directory  
> structure.  The documentation and some of the build processes have  
> not caught up.  Simon Marlow sent a helpful e-mail to the ghc users  
> list a few days ago that you should look at.
> 3) Building the .hc files mostly requires the appropriate settings  
> in mk/build.mk on the Host (linux) machine.  I'll include my  
> build.mk below.  There is a target in the top level makefile called  
> hc-file-bundle (which needs to be invoked with the parameter  
> ProjectNameShort=ghc in HEAD and Project=ghc in STABLE).  This  
> target packages up the .hc files, but does not build them.  Some of  
> the .hc files in utils (genapply, genprimopcode, & ghc-pkg) don't  
> get built.  I just cd to the directories and make them by hand (be  
> sure to use the in-place compiler).  A GhcUtilsHcOpts variable in  
> the make structure would be nice (in order to pass -keep-hc-files  
> to ghc when building these on the host).
> 4) I have been working with Registerised hc files.  This may have  
> been a mistake, as registerised code seems to present some unique  
> challenges on Darwin/86.  See the items below for a discussion.
> 5) If I understand correctly (somebody with better knowledge please  
> correct me), there is a register allocation conflict between ghc  
> and relocatable code generated by gcc on the 386 (gcc flag -fPIC).   
> This limits ghc to producing static binaries.  The gcc in Xcode  
> builds relocatable code by default and requires -static to build  
> static binaries.
> I think this conflict is limited to code that goes through the  
> Mangler (registerized code).
> 6) If I understand correctly, there is code in the RTS that cannot  
> be built using the native code generator.  Which suggests that  
> we're stuck with static binaries.  There is a ticket to fix this in  
> 7) Mac OS X really doesn't like static binaries.  In fact, in order  
> to link a static binary, you have to go to opendarwin and download  
> the Csu package to build crt0.o.  It's not included in any of the  
> development tools.  Apple warns that static binaries are likely to  
> fail to operate in O/S version changes.
> Curently I'm fighting with the Makefiles to figure out how to get  
> the -static flag stuffed into all of the invocations of gcc.  Some  
> of the invocations in rts components don't seem to obey the normal  
> variables used in the makefile structure.  I haven't had time to  
> puzzle this out and won't for a few days.
> mk/build.mk used to generate hc files:
> GhcLibHcOpts = -O -fasm -keep-hc-files
> GhcRtsHcOpts = -fasm -keep-hc-files
> GhcWithInterpreter = NO
> GhcStage1HcOpts = -O
> GhcStage2HcOpts = -O -fasm -keep-hc-files
> SRC_HC_OPTS += -H32m
> -reilly hayes
> On May 5, 2006, at 7:34 PM, Scott Weeks wrote:
>> Hi All,
>> Does anyone know if there's been any headway on this? If there's not
>> a port available, where do I go about finding the hc files? Could I
>> compile on a windows or linux x86 box and use the generated hc files
>> to bootstrap?
>> Cheers,
>> Scott
>> On 22/03/2006, at 7:09 AM, Deling Ren wrote:
>>> Hi there,
>>> Has anyone made any attempt to port GHC to Mac OS X on x86?
>>> Wolfgang Thaller’s binary package runs over Rosetta but slow (not
>>> surprising). It can not be used to compile a native version either
>>> (I got some errors related to machine registers).
>>> I tried to do a bootstrap but can't find the ".HC" files mentioned
>>> in the manual. They don't seem to be on the download page of GHC.
>>> Any ideas?
>>> Thanks.
>>> Deling_______________________________________________
>>> Haskell-Cafe mailing list
>>> Haskell-Cafe at haskell.org
>>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>> _______________________________________________
>> Haskell-Cafe mailing list
>> Haskell-Cafe at haskell.org
>> http://www.haskell.org/mailman/listinfo/haskell-cafe
> Reilly Hayes
> rfh at reillyhayes.com

More information about the Haskell-Cafe mailing list