Cabal-1.16.0: A framework for packaging Haskell software

Portability | portable
Maintainer | cabal-devel@haskell.org
Safe Haskell | Safe-Inferred

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
  - | Solaris
  - | AIX
  - | HPUX
  - | IRIX
  - | HaLVM
  - | OtherOS String
- buildOS :: OS
- data Arch
  - = I386
  - | X86_64
  - | PPC
  - | PPC64
  - | Sparc
  - | Arm
  - | Mips
  - | SH
  - | IA64
  - | S390
  - | Alpha
  - | Hppa
  - | Rs6000
  - | M68k
  - | Vax
  - | OtherArch String
- buildArch :: Arch
- data Platform = Platform Arch OS
- buildPlatform :: Platform

# Operating System

data OS

Constructors

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

Instances

Eq OS |
Ord OS |
Read OS |
Show OS |
Text OS |

buildOS :: OS

# Machine Architecture

data Arch

Constructors

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

Instances

Eq Arch |
Ord Arch |
Read Arch |
Show Arch |
Text Arch |

buildArch :: Arch

# Platform is a pair of arch and OS

data Platform

Constructors

Platform Arch OS |

Instances

Eq Platform |
Ord Platform |
Read Platform |
Show Platform |
Text Platform |

buildPlatform :: Platform