... | ... | @@ -4,44 +4,10 @@ |
|
|
The following table describes to what extent GHC currently supports
|
|
|
various platforms. To find out who is responsible for each platform, see [Contributors](contributors).
|
|
|
|
|
|
## Tier 1 platforms
|
|
|
|
|
|
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
|
|
|
Tier 1 platforms are our top priority. We only release GHC when they all work.
|
|
|
|
|
|
<table><tr><th>**Architecture**</th>
|
|
|
<th>**OS**</th>
|
... | ... | @@ -59,7 +25,7 @@ Definitions: |
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No(\*2) </th>
|
|
|
<th> No(\*W) </th>
|
|
|
<th>[WindowsGhc](windows-ghc)</th></tr>
|
|
|
<tr><th> x86 </th>
|
|
|
<th> Linux </th>
|
... | ... | @@ -71,11 +37,55 @@ Definitions: |
|
|
<th> No </th>
|
|
|
<th></th></tr>
|
|
|
<tr><th> x86 </th>
|
|
|
<th> MacOS X </th>
|
|
|
<th> i386-apple-darwin </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No </th>
|
|
|
<th>X86OSXGhc?</th></tr>
|
|
|
<tr><th> x86-64 </th>
|
|
|
<th> Linux </th>
|
|
|
<th> x86_64-unknown-linux </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No </th>
|
|
|
<th></th></tr></table>
|
|
|
|
|
|
**\*W** Win32 DLL support bitrotten
|
|
|
|
|
|
## Tier 2 platforms
|
|
|
|
|
|
|
|
|
Tier 2 platforms should work, but we rely on community support for
|
|
|
developing, testing, and building distributions. We may release GHC
|
|
|
with some Tier 2 platforms not working.
|
|
|
|
|
|
|
|
|
We'd like to promote as many
|
|
|
Tier 2 platforms as possible to Tier 1; the criterion is that there's
|
|
|
an active community supporter (or supporters) who is willing to take
|
|
|
responsibility for the platform and work with us during the release
|
|
|
process.
|
|
|
|
|
|
<table><tr><th>**Architecture**</th>
|
|
|
<th>**OS**</th>
|
|
|
<th>**Build name**</th>
|
|
|
<th>**Reg'd**</th>
|
|
|
<th>**GHCi**</th>
|
|
|
<th>**NCG**</th>
|
|
|
<th>**f.i.**</th>
|
|
|
<th>**Dyn libs**</th>
|
|
|
<th>**WikiPage**</th></tr>
|
|
|
<tr><th> x86 </th>
|
|
|
<th> FreeBSD </th>
|
|
|
<th> i386-unknown-freebsd </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No </th>
|
|
|
<th></th></tr>
|
... | ... | @@ -84,7 +94,7 @@ Definitions: |
|
|
<th> i386-unknown-openbsd </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No </th>
|
|
|
<th></th></tr>
|
... | ... | @@ -93,25 +103,52 @@ Definitions: |
|
|
<th> i386-unknown-netbsd </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No </th>
|
|
|
<th></th></tr>
|
|
|
<tr><th> x86 </th>
|
|
|
<th> MacOS X </th>
|
|
|
<th> i386-apple-darwin </th>
|
|
|
<th> Solaris </th>
|
|
|
<th> i386-unknown-solaris2 </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No </th>
|
|
|
<th></th></tr>
|
|
|
<tr><th> x86-64 </th>
|
|
|
<th> FreeBSD </th>
|
|
|
<th> amd64-unknown-freebsd </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No </th>
|
|
|
<th>X86OSXGhc?</th></tr>
|
|
|
<th></th></tr>
|
|
|
<tr><th> x86-64 </th>
|
|
|
<th> OpenBSD </th>
|
|
|
<th> amd64-unknown-openbsd </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No </th>
|
|
|
<th></th></tr>
|
|
|
<tr><th> x86-64 </th>
|
|
|
<th> NetBSD </th>
|
|
|
<th> amd64-unknown-netbsd </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No </th>
|
|
|
<th></th></tr>
|
|
|
<tr><th> PowerPC </th>
|
|
|
<th> AIX </th>
|
|
|
<th> powerpc-ibm-aix </th>
|
|
|
<th> Yes </th>
|
|
|
<th></th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No </th>
|
|
|
<th></th></tr>
|
... | ... | @@ -120,7 +157,7 @@ Definitions: |
|
|
<th> powerpc-unknown-linux </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No </th>
|
|
|
<th></th></tr>
|
... | ... | @@ -129,7 +166,7 @@ Definitions: |
|
|
<th> powerpc-apple-darwin </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th></th></tr>
|
... | ... | @@ -138,7 +175,7 @@ Definitions: |
|
|
<th> powerpc64-unknown-linux </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No </th>
|
|
|
<th></th></tr>
|
... | ... | @@ -147,16 +184,16 @@ Definitions: |
|
|
<th> sparc-sun-solaris2 </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No(\*1) </th>
|
|
|
<th> No(\*S1) </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No </th>
|
|
|
<th></th></tr>
|
|
|
<tr><th> Sparc </th>
|
|
|
<th> Linux </th>
|
|
|
<th> sparc-unknown-linux </th>
|
|
|
<th> Yes(\*3) </th>
|
|
|
<th> Yes(\*S2) </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No(\*1) </th>
|
|
|
<th> No(\*S1) </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No </th>
|
|
|
<th></th></tr>
|
... | ... | @@ -165,34 +202,34 @@ Definitions: |
|
|
<th> sparc-unknown-openbsd </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No(\*1) </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No </th>
|
|
|
<th></th></tr>
|
|
|
<tr><th> x86-64 </th>
|
|
|
<th> Linux </th>
|
|
|
<th> x86_64-unknown-linux </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No </th>
|
|
|
<th></th></tr>
|
|
|
<tr><th> x86-64 </th>
|
|
|
<th> OpenBSD </th>
|
|
|
<th> amd64-unknown-openbsd </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No(\*S1) </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No </th>
|
|
|
<th></th></tr>
|
|
|
<th></th></tr></table>
|
|
|
|
|
|
**\*S1** Sparc NCG bitrotten, but still in the tree
|
|
|
**\*S3** but see [\#591](https://gitlab.haskell.org//ghc/ghc/issues/591)
|
|
|
|
|
|
## Tier 3 platforms
|
|
|
|
|
|
|
|
|
Tier 3 platforms worked in the past, but probably do not work now.
|
|
|
|
|
|
<table><tr><th>**Architecture**</th>
|
|
|
<th>**OS**</th>
|
|
|
<th>**Build name**</th>
|
|
|
<th>**Reg'd**</th>
|
|
|
<th>**GHCi**</th>
|
|
|
<th>**NCG**</th>
|
|
|
<th>**f.i.**</th>
|
|
|
<th>**Dyn libs**</th>
|
|
|
<th>**WikiPage**</th></tr>
|
|
|
<tr><th> Mips64 </th>
|
|
|
<th> Irix </th>
|
|
|
<th> mips-unknown-linux </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th></th></tr>
|
... | ... | @@ -201,16 +238,36 @@ Definitions: |
|
|
<th> ia64-unknown-linux </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No </th>
|
|
|
<th></th></tr>
|
|
|
<tr><th> x86 </th>
|
|
|
<th> Windows (Cygwin) </th>
|
|
|
<th> i386-unknown-cygwin32 </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No(\*2)
|
|
|
</th>
|
|
|
<th></th></tr>
|
|
|
<tr><th> Alpha </th>
|
|
|
<th> Dec OSF </th>
|
|
|
<th> alpha-dec-osf3 </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No
|
|
|
</th>
|
|
|
<th></th></tr>
|
|
|
<tr><th> Alpha </th>
|
|
|
<th> Linux </th>
|
|
|
<th> alpha-unknown-linux </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No </th>
|
|
|
<th></th></tr>
|
... | ... | @@ -219,7 +276,7 @@ Definitions: |
|
|
<th> hppa-unknown-linux </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th></th></tr>
|
... | ... | @@ -228,7 +285,7 @@ Definitions: |
|
|
<th> s390-ibm-linux </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th></th></tr>
|
... | ... | @@ -237,7 +294,7 @@ Definitions: |
|
|
<th> m68k-unknown-linux </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th></th></tr>
|
... | ... | @@ -246,7 +303,7 @@ Definitions: |
|
|
<th> mips-unknown-linux </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th></th></tr>
|
... | ... | @@ -255,88 +312,70 @@ Definitions: |
|
|
<th> mipsel-unknown-linux </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th></th></tr>
|
|
|
<tr><th> arm </th>
|
|
|
<tr><th> ARM </th>
|
|
|
<th> Linux </th>
|
|
|
<th> arm-unknown-linux </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th></th></tr>
|
|
|
<tr><th> ARM </th>
|
|
|
<th> Maemo (Linux) </th>
|
|
|
<th> arm-unknown-linux-gnu </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th>[ArmLinuxGhc](arm-linux-ghc)</th></tr>
|
|
|
<tr><th> ARM </th>
|
|
|
<th> Debian armel </th>
|
|
|
<th> arm-linux-gnueabi </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th></th></tr></table>
|
|
|
|
|
|
**\*1** Sparc NCG bitrotten, but still in the tree
|
|
|
**\*2** Win32 DLL support bitrotten
|
|
|
**\*3** but see [\#591](https://gitlab.haskell.org//ghc/ghc/issues/591)
|
|
|
## Definitions
|
|
|
|
|
|
## Platforms that worked in the past
|
|
|
**Reg'd (Registerised)**
|
|
|
|
|
|
<table><tr><th>**Architecture**</th>
|
|
|
<th>**OS**</th>
|
|
|
<th>**Build name**</th>
|
|
|
<th>**Reg'd**</th>
|
|
|
<th>**GHCi**</th>
|
|
|
<th>**NCG**</th>
|
|
|
<th>**f.i.**</th>
|
|
|
<th>**Dyn libs**</th></tr>
|
|
|
<tr><th> x86 </th>
|
|
|
<th> Windows (Cygwin) </th>
|
|
|
<th> i386-unknown-cygwin32 </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No(\*2)
|
|
|
</th></tr>
|
|
|
<tr><th> x86 </th>
|
|
|
<th> Solaris </th>
|
|
|
<th> i386-unknown-solaris2 </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No </th>
|
|
|
<th> Yes </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No
|
|
|
</th></tr>
|
|
|
<tr><th> Alpha </th>
|
|
|
<th> Dec OSF </th>
|
|
|
<th> alpha-dec-osf3 </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No
|
|
|
</th></tr></table>
|
|
|
>
|
|
|
> 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.
|
|
|
|
|
|
## Platforms currently being ported
|
|
|
**GHCi**
|
|
|
|
|
|
<table><tr><th>**Architecture**</th>
|
|
|
<th>**OS**</th>
|
|
|
<th>**Build name**</th>
|
|
|
<th>**Reg'd**</th>
|
|
|
<th>**GHCi**</th>
|
|
|
<th>**NCG**</th>
|
|
|
<th>**f.i.**</th>
|
|
|
<th>**Dyn libs**</th>
|
|
|
<th>**WikiPage**</th></tr>
|
|
|
<tr><th> ARM </th>
|
|
|
<th> Maemo (Linux) </th>
|
|
|
<th> arm-unknown-linux-gnu </th>
|
|
|
<th> Yes </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th>[ArmLinuxGhc](arm-linux-ghc)</th></tr>
|
|
|
<tr><th> ARM </th>
|
|
|
<th> Debian armel </th>
|
|
|
<th> arm-linux-gnueabi </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th> No </th>
|
|
|
<th></th></tr></table> |
|
|
\ No newline at end of file |
|
|
>
|
|
|
> 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. |