| Version 14 (modified by martinwguy, 6 years ago) |
|---|
Platforms
The following table describes to what extent GHC currently supports various platforms. To find out who is responsible for each platform, see Contributors.
Definitions:
Reg'd (Registerised)
A catch-all term for a number of optimisations, which collectively require the mangler (a Perl script that post-processes the assembly output from gcc). Unregisterised builds require only a working C compiler and are hence far more portable. The registerised optimisations include: direct tail calls (as opposed to using the "mini-interpreter"), info-tables adjacent to entry code, and virtual machine registers mapped to real machine registers.
GHCi
The interactive environment, including dynamic linking of object code and dynamic generation of FFI calls.
NCG
Native code generator: GHC can generate assembly code directly for this platform, bypassing gcc.
f.i. wrapper
Support for foreign import "wrapper" (ghc/rts/Adjustor.c).
Dynamic libraries
Support for generating dynamically-linked sharable libraries from Haskell code.
Platforms that work in the current release
| Architecture | OS | Build name | Reg'd | GHCi | NCG | f.i. | Dyn libs | WikiPage? |
| x86 | Windows (MinGW) | i386-unknown-mingw32 | Yes | Yes | Yes | Yes | No(*2) | WindowsGhc |
| x86 | Linux | i386-unknown-{linux,gnu} | Yes | Yes | Yes | Yes | No | |
| x86 | FreeBSD | i386-unknown-freebsd | Yes | Yes | Yes | Yes | No | |
| x86 | OpenBSD | i386-unknown-openbsd | Yes | Yes | Yes | Yes | No | |
| x86 | NetBSD | i386-unknown-netbsd | Yes | Yes | Yes | Yes | No | |
| x86 | MacOS X | i386-apple-darwin | Yes | Yes | Yes | Yes | No | X86OSXGhc? |
| PowerPC | AIX | powerpc-ibm-aix | Yes | Yes | Yes | No | ||
| PowerPC | Linux | powerpc-unknown-linux | Yes | Yes | Yes | Yes | No | |
| PowerPC | MacOS X | powerpc-apple-darwin | Yes | Yes | Yes | Yes | Yes | |
| PowerPC64 | Linux | powerpc64-unknown-linux | Yes | No | No | Yes | No | |
| Sparc | Solaris | sparc-sun-solaris2 | Yes | Yes | No(*1) | Yes | No | |
| Sparc | Linux | sparc-unknown-linux | Yes(*3) | Yes | No(*1) | Yes | No | |
| Sparc | OpenBSD | sparc-unknown-openbsd | Yes | Yes | No(*1) | Yes | No | |
| x86-64 | Linux | x86_64-unknown-linux | Yes | Yes | Yes | Yes | No | |
| x86-64 | OpenBSD | amd64-unknown-openbsd | Yes | Yes | Yes | Yes | No | |
| Mips64 | Irix | mips-unknown-linux | No | No | No | No | No | |
| IA-64 | Linux | ia64-unknown-linux | Yes | Yes | No | Yes | No | |
| Alpha | Linux | alpha-unknown-linux | No | No | No | Yes | No | |
| HPPA | Linux | hppa-unknown-linux | No | No | No | No | No | |
| S/390 | Linux | s390-ibm-linux | No | No | No | No | No | |
| m68k | Linux | m68k-unknown-linux | No | No | No | No | No | |
| mips | Linux | mips-unknown-linux | No | No | No | No | No | |
| mipsel | Linux | mipsel-unknown-linux | No | No | No | No | No | |
| arm | Linux | arm-unknown-linux | No | No | No | No | No |
*1 Sparc NCG bitrotten, but still in the tree
*2 Win32 DLL support bitrotten
*3 but see #591
Platforms that worked in the past
| Architecture | OS | Build name | Reg'd | GHCi | NCG | f.i. | Dyn libs |
| x86 | Windows (Cygwin) | i386-unknown-cygwin32 | Yes | No | Yes | Yes | No(*2) |
| x86 | Solaris | i386-unknown-solaris2 | Yes | No | Yes | Yes | No |
| Alpha | Dec OSF | alpha-dec-osf3 | No | No | No | Yes | No |
Platforms currently being ported
| Architecture | OS | Build name | Reg'd | GHCi | NCG | f.i. | Dyn libs | WikiPage? |
| ARM | Maemo (Linux) | arm-unknown-linux-gnu | Yes | No | No | No | No | ArmLinuxGhc |
| ARM | Debian armel | arm-linux-gnueabi | No | No | No | No | No |
