Daily bump.
[gcc.git] / libphobos / src / std / system.d
blobaa672a59dd3acea91b32fbf91b2b33eddb0ec04f
1 // Written in the D programming language.
3 /**
4 * Information about the target operating system, environment, and CPU.
6 * Copyright: Copyright The D Language Foundation 2000 - 2011
7 * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
8 * Authors: $(HTTP digitalmars.com, Walter Bright) and
9 $(HTTP jmdavisprog.com, Jonathan M Davis)
10 * Source: $(PHOBOSSRC std/system.d)
12 module std.system;
14 immutable
16 /++
17 Operating system.
19 Note:
20 This is for cases where you need a value representing the OS at
21 runtime. If you're doing something which should compile differently
22 on different OSes, then please use `version (Windows)`,
23 `version (linux)`, etc.
25 See_Also:
26 $(DDSUBLINK spec/version,PredefinedVersions, Predefined Versions)
28 enum OS
30 win32 = 1, /// Microsoft 32 bit Windows systems
31 win64, /// Microsoft 64 bit Windows systems
32 linux, /// All Linux Systems, except for Android
33 osx, /// Mac OS X
34 iOS, /// iOS
35 tvOS, /// tvOS
36 watchOS, /// watchOS
37 freeBSD, /// FreeBSD
38 netBSD, /// NetBSD
39 openBSD, /// OpenBSD
40 dragonFlyBSD, /// DragonFlyBSD
41 solaris, /// Solaris
42 android, /// Android
43 otherPosix, /// Other Posix Systems
44 unknown, /// Unknown
47 /// The OS that the program was compiled for.
48 version (Win32) OS os = OS.win32;
49 else version (Win64) OS os = OS.win64;
50 else version (Android) OS os = OS.android;
51 else version (linux) OS os = OS.linux;
52 else version (OSX) OS os = OS.osx;
53 else version (iOS) OS os = OS.iOS;
54 else version (tvOS) OS os = OS.tvOS;
55 else version (watchOS) OS os = OS.watchOS;
56 else version (FreeBSD) OS os = OS.freeBSD;
57 else version (NetBSD) OS os = OS.netBSD;
58 else version (OpenBSD) OS os = OS.openBSD;
59 else version (DragonFlyBSD) OS os = OS.dragonFlyBSD;
60 else version (Posix) OS os = OS.otherPosix;
61 else OS os = OS.unknown;
63 /++
64 Byte order endianness.
66 Note:
67 This is intended for cases where you need to deal with endianness at
68 runtime. If you're doing something which should compile differently
69 depending on whether you're compiling on a big endian or little
70 endian machine, then please use `version (BigEndian)` and
71 `version (LittleEndian)`.
73 See_Also:
74 $(DDSUBLINK spec/version,PredefinedVersions, Predefined Versions)
76 enum Endian
78 bigEndian, /// Big endian byte order
79 littleEndian /// Little endian byte order
82 /// The endianness that the program was compiled for.
83 version (LittleEndian) Endian endian = Endian.littleEndian;
84 else Endian endian = Endian.bigEndian;
85 /++
86 Instruction Set Architecture.
88 Note:
89 This is intended for cases where you need a value representing the
90 instruction set architecture at runtime. If you're doing something
91 which should compile differently depending on instruction set
92 architecture, then please use `version (X86_64)`, `version (ARM)`,
93 etc.
95 See_Also:
96 $(DDSUBLINK spec/version,PredefinedVersions, Predefined Versions)
98 enum ISA
100 x86, /// Intel and AMD 32-bit processors
101 x86_64, /// Intel and AMD 64-bit processors
102 arm, /// The ARM architecture (32-bit) (AArch32 et al)
103 aarch64, /// The Advanced RISC Machine architecture (64-bit)
104 asmJS, /// The asm.js intermediate programming language
105 avr, /// 8-bit Atmel AVR Microcontrollers
106 epiphany, /// The Epiphany architecture
107 ppc, /// The PowerPC architecture, 32-bit
108 ppc64, /// The PowerPC architecture, 64-bit
109 ia64, /// The Itanium architecture (64-bit)
110 mips32, /// The MIPS architecture, 32-bit
111 mips64, /// The MIPS architecture, 64-bit
112 msp430, /// The MSP430 architecture
113 nvptx, /// The Nvidia Parallel Thread Execution (PTX) architecture, 32-bit
114 nvptx64, /// The Nvidia Parallel Thread Execution (PTX) architecture, 64-bit
115 riscv32, /// The RISC-V architecture, 32-bit
116 riscv64, /// The RISC-V architecture, 64-bit
117 sparc, /// The SPARC architecture, 32-bit
118 sparc64, /// The SPARC architecture, 64-bit
119 s390, /// The System/390 architecture, 32-bit
120 systemZ, /// The System Z architecture, 64-bit
121 hppa, /// The HP PA-RISC architecture, 32-bit
122 hppa64, /// The HP PA-RISC architecture, 64-bit
123 sh, /// The SuperH architecture, 32-bit
124 webAssembly, /// The WebAssembly virtual ISA (instruction set architecture), 32-bit
125 alpha, /// The Alpha architecture
126 unknown, /// Unknown
129 /// The instruction set architecture that the program was compiled for.
130 version (X86) ISA instructionSetArchitecture = ISA.x86;
131 else version (X86_64) ISA instructionSetArchitecture = ISA.x86_64;
132 else version (ARM) ISA instructionSetArchitecture = ISA.arm;
133 else version (AArch64) ISA instructionSetArchitecture = ISA.aarch64;
134 else version (AsmJS) ISA instructionSetArchitecture = ISA.asmJS;
135 else version (AVR) ISA instructionSetArchitecture = ISA.avr;
136 else version (Epiphany) ISA instructionSetArchitecture = ISA.epiphany;
137 else version (PPC) ISA instructionSetArchitecture = ISA.ppc;
138 else version (PPC64) ISA instructionSetArchitecture = ISA.ppc64;
139 else version (IA64) ISA instructionSetArchitecture = ISA.ia64;
140 else version (MIPS32) ISA instructionSetArchitecture = ISA.mips32;
141 else version (MIPS64) ISA instructionSetArchitecture = ISA.mips64;
142 else version (MSP430) ISA instructionSetArchitecture = ISA.msp430;
143 else version (NVPTX) ISA instructionSetArchitecture = ISA.nvptx;
144 else version (NVPTX64) ISA instructionSetArchitecture = ISA.nvptx64;
145 else version (RISCV32) ISA instructionSetArchitecture = ISA.riscv32;
146 else version (RISCV64) ISA instructionSetArchitecture = ISA.riscv64;
147 else version (SPARC) ISA instructionSetArchitecture = ISA.sparc;
148 else version (SPARC64) ISA instructionSetArchitecture = ISA.sparc64;
149 else version (S390) ISA instructionSetArchitecture = ISA.s390;
150 else version (SystemZ) ISA instructionSetArchitecture = ISA.systemZ;
151 else version (HPPA) ISA instructionSetArchitecture = ISA.hppa;
152 else version (HPPA64) ISA instructionSetArchitecture = ISA.hppa64;
153 else version (SH) ISA instructionSetArchitecture = ISA.sh;
154 else version (WebAssembly) ISA instructionSetArchitecture = ISA.webAssembly;
155 else version (Alpha) ISA instructionSetArchitecture = ISA.alpha;
156 else ISA instructionSetArchitecture = ISA.unknown;