Cabal-1.22.5.0: A framework for packaging Haskell software

Copyright | Duncan Coutts 2007-2008
Maintainer | cabal-devel@haskell.org
Portability | portable
Safe Haskell | Safe
Language | Haskell98

Distribution.System

Contents

- Operating System
- Machine Architecture
- Platform is a pair of arch and OS

Description

Cabal often needs to do slightly different things on specific platforms. You probably know about the `os` however using that is very inconvenient because it is a string and different Haskell implementations do not agree on using the same strings for the same platforms! (In particular see the controversy over "windows" vs "ming32"). So to make it more consistent and easy to use we have an `OS` enumeration.

Synopsis

- data OS
  - = Linux
  - | Windows
  - | OSX
  - | FreeBSD
  - | OpenBSD
  - | NetBSD
  - | DragonFly
  - | Solaris
  - | AIX
  - | HPUX
  - | IRIX
  - | HaLVM
  - | IOS
  - | Ghcjs
  - | OtherOS String
- buildOS :: OS
- data Arch
  - = I386
  - | X86_64
  - | PPC
  - | PPC64
  - | Sparc
  - | Arm
  - | Mips
  - | SH
  - | IA64
  - | S390
  - | Alpha
  - | Hppa
  - | Rs6000
  - | M68k
  - | Vax
  - | JavaScript
  - | OtherArch String
- buildArch :: Arch
- data Platform = Platform Arch OS
- buildPlatform :: Platform
- platformFromTriple :: String -> Maybe Platform

# Operating System

data OS

Constructors

Linux |
Windows |
OSX |
FreeBSD |
OpenBSD |
NetBSD |
DragonFly |
Solaris |
AIX |
HPUX |
IRIX |
HaLVM |
IOS |
Ghcjs |
OtherOS String |

Instances

Eq OS |
Data OS |
Ord OS |
Read OS |
Show OS |
Generic OS |
Binary OS |
Text OS |
type Rep OS |

buildOS :: OS

# Machine Architecture

data Arch

Constructors

I386 |
X86_64 |
PPC |
PPC64 |
Sparc |
Arm |
Mips |
SH |
IA64 |
S390 |
Alpha |
Hppa |
Rs6000 |
M68k |
Vax |
JavaScript |
OtherArch String |

Instances

Eq Arch |
Data Arch |
Ord Arch |
Read Arch |
Show Arch |
Generic Arch |
Binary Arch |
Text Arch |
type Rep Arch |

buildArch :: Arch

# Platform is a pair of arch and OS

data Platform

Constructors

Platform Arch OS |

Instances

Eq Platform |
Data Platform |
Ord Platform |
Read Platform |
Show Platform |
Generic Platform |
Binary Platform |
Text Platform |
type Rep Platform |

buildPlatform :: Platform

The platform Cabal was compiled on. In most cases, `LocalBuildInfo.hostPlatform` should be used instead (the platform we're targeting).

platformFromTriple :: String -> Maybe Platform