January 19, 2010

During my “Linux Kernel Modules with Haskell” tech talk I mentioned my next personal project (on my already over-full plate) would be to play with Haskell on ARM.  I’m finally getting around to a little bit of playing!  Step zero was to get hardware so I acquired a touchbook – feel free to ignore all the marketing on that site (though I am quite happy with it) and just understand it is the equivalent of a beagleboard with keyboard, touch-pad, touch screen, speakers, wifi, bluetooth, two batteries, more USB ports, and a custom Linux distribution.

Step 1: Get an Unregistered Build

To start its best to bypass the porting GHC instructions and steal someone elses porting effort in the form of a Debian package (actually, three debian packages).  Convert them to a .tar.gz (unless you have a debian OS on your ARM system) using a handy deb2targz script.  Now untar them onto your ARM system via “sudo tar xzf oneOfThePackages.tar.gz -C /” .  Be sure to copy the package.conf  as it seems to be missing from the .debs “sudo cp /usr/lib/ghc-6.10.4/package.conf.shipped /var/lib/ghc-6.10.4/package.conf”.   After all this you should have a working copy of GHC 6.10.4 – confirm that assertion by compiling some simple test programs.

I now have my copy of 6.10.4 building GHC 6.12.1.  The only hitch thus far was needing to add -mlong-calls to the C options when running ./configure.  With luck I will soon have an unregistered GHC 6.12.1 on my ARM netbook.  I’ll edit this post tomorrow with results (yes, I’m actually compiling on the ARM and not in an x86 + QEMU environment).

Step 2: Get a registered build – upstream patches

This is where things become more black-box to me.  I want to make a native code generator (NCG) for GHC/ARM.  There are some decent notes about the RTS at the end of the previously mentioned porting guide and there is also a (up-to-date?) page on the NCG.  Hopefully this, combined with the GHC source, will be enough but I’ll probably be poking my head into #ghc more often.

Step 3: Write more Haskell

The purpose of all of this was to use Haskell on my ARM system.  Hopefully I’ll find time to tackle some problems that non-developers will care about!

6 Responses to “GHC on ARM”

  1. Nice. Do you think this could be used to have a working ghc on the n900? (http://maemo.nokia.com/n900/)

  2. John Stracke Says:

    Depends; does Maemo 5 use gcc4.4? My N810 uses 3.4, and these packages depend on 4.4. I’m going to try building the packages from source.

  3. John Stracke Says:

    …no, that doesn’t work, either: the build process depends on gcc >= 4:4.2.

    I suppose I might be able to build gcc4 for maemo.

  4. José Pedro Magalhães Says:

    At least the SDK has it: http://maemo.org/packages/view/gcc-4.2

  5. pat Says:

    Thanks for posting these instructions. You may want to update your debian package links, the packages.debian.com urls have changed, for example ghc6 is now located at http://packages.debian.org/unstable/main/ghc6.

  6. GHC ARM NCG Says:

    have you been able to go further with your idea of writing NCG for ARM? If so, are you going to share your results?

Comments are closed.


Get every new post delivered to your Inbox.

%d bloggers like this: