The OpenD Programming Language

1 /**
2  * D header file for POSIX.
3  *
4  * Copyright: Copyright Sean Kelly 2005 - 2009.
5  * License:   $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
6  * Authors:   Sean Kelly,
7               Alex Rønne Petersen
8  * Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition
9  */
10 
11 /*          Copyright Sean Kelly 2005 - 2009.
12  * Distributed under the Boost Software License, Version 1.0.
13  *    (See accompanying file LICENSE or copy at
14  *          http://www.boost.org/LICENSE_1_0.txt)
15  */
16 module core.sys.posix.config;
17 
18 public import core.stdc.config;
19 
20 version (Posix):
21 extern (C) nothrow @nogc:
22 
23 enum _XOPEN_SOURCE     = 600;
24 enum _POSIX_SOURCE     = true;
25 enum _POSIX_C_SOURCE   = 200112L;
26 
27 version (CRuntime_Glibc)
28 {
29     // man 7 feature_test_macros
30     // http://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html
31     enum _GNU_SOURCE         = false;
32     enum _DEFAULT_SOURCE     = false;
33     enum _ATFILE_SOURCE      = false;
34 
35     // _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for _DEFAULT_SOURCE.
36     deprecated("use _DEFAULT_SOURCE")
37     {
38         enum _BSD_SOURCE = false;
39         enum _SVID_SOURCE = false;
40     }
41 
42     enum _FILE_OFFSET_BITS   = 64;
43     // <sys/cdefs.h>
44     enum __REDIRECT          = false;
45 
46     enum _REENTRANT          = true; // set by compiler when linking -pthread
47 
48     // deduced <features.h>
49     enum __USE_FILE_OFFSET64 = _FILE_OFFSET_BITS == 64;
50     enum __USE_LARGEFILE     = __USE_FILE_OFFSET64 && !__REDIRECT;
51     enum __USE_LARGEFILE64   = __USE_FILE_OFFSET64 && !__REDIRECT;
52 
53     deprecated("use _XOPEN_SOURCE >= 600")
54     {
55         enum __USE_XOPEN2K      = _XOPEN_SOURCE >= 600;
56         enum __USE_XOPEN2KXSI   = _XOPEN_SOURCE >= 600;
57     }
58     deprecated("use _XOPEN_SOURCE >= 700")
59     {
60         enum __USE_XOPEN2K8     = _XOPEN_SOURCE >= 700;
61         enum __USE_XOPEN2K8XSI  = _XOPEN_SOURCE >= 700;
62     }
63 
64     deprecated("use _DEFAULT_SOURCE")
65     enum __USE_MISC          = _DEFAULT_SOURCE;
66     deprecated("use _ATFILE_SOURCE")
67     enum __USE_ATFILE        = _ATFILE_SOURCE;
68     deprecated("use _GNU_SOURCE")
69     enum __USE_GNU           = _GNU_SOURCE;
70     deprecated("use _REENTRANT")
71     enum __USE_REENTRANT     = _REENTRANT;
72 
73     version (D_LP64)
74         enum __WORDSIZE = 64;
75     else
76         enum __WORDSIZE = 32;
77 }
78 else version (CRuntime_Musl)
79 {
80     enum _GNU_SOURCE         = false;
81     enum _DEFAULT_SOURCE     = false;
82     enum _ATFILE_SOURCE      = false;
83 
84     // off_t is always 64 bits on Musl
85     enum _FILE_OFFSET_BITS   = 64;
86     enum __USE_FILE_OFFSET64 = true;
87 
88     version (D_LP64)
89         enum __WORDSIZE = 64;
90     else
91         enum __WORDSIZE = 32;
92 }
93 else version (CRuntime_UClibc)
94 {
95     enum _GNU_SOURCE         = false;
96     enum _DEFAULT_SOURCE     = false;
97     enum _ATFILE_SOURCE      = false;
98 
99     enum _FILE_OFFSET_BITS   = 64;
100     enum __REDIRECT          = false;
101 
102     enum _REENTRANT          = true;
103 
104     enum __USE_FILE_OFFSET64 = _FILE_OFFSET_BITS == 64;
105     enum __USE_LARGEFILE     = __USE_FILE_OFFSET64 && !__REDIRECT;
106     enum __USE_LARGEFILE64   = __USE_FILE_OFFSET64 && !__REDIRECT;
107 
108     deprecated("use _XOPEN_SOURCE >= 600")
109     {
110         enum __USE_XOPEN2K      = _XOPEN_SOURCE >= 600;
111         enum __USE_XOPEN2KXSI   = _XOPEN_SOURCE >= 600;
112     }
113     deprecated("use _XOPEN_SOURCE >= 700")
114     {
115         enum __USE_XOPEN2K8     = _XOPEN_SOURCE >= 700;
116         enum __USE_XOPEN2K8XSI  = _XOPEN_SOURCE >= 700;
117     }
118 
119     deprecated("use _DEFAULT_SOURCE")
120     enum __USE_MISC          = _DEFAULT_SOURCE;
121     deprecated("use _ATFILE_SOURCE")
122     enum __USE_ATFILE        = _ATFILE_SOURCE;
123     deprecated("use _GNU_SOURCE")
124     enum __USE_GNU           = _GNU_SOURCE;
125     deprecated("use _REENTRANT")
126     enum __USE_REENTRANT     = _REENTRANT;
127 
128     version (D_LP64)
129         enum __WORDSIZE = 64;
130     else
131         enum __WORDSIZE = 32;
132 }
133 else version (CRuntime_Bionic)
134 {
135     enum _GNU_SOURCE         = false;
136     enum _DEFAULT_SOURCE     = false;
137     enum _ATFILE_SOURCE      = false;
138 
139     enum __USE_FILE_OFFSET64 = false; // see https://android.googlesource.com/platform/bionic/+/master/docs/32-bit-abi.md
140     deprecated("use _GNU_SOURCE")
141     enum __USE_GNU           = _GNU_SOURCE;
142 
143     version (D_LP64)
144         enum __WORDSIZE = 64;
145     else
146         enum __WORDSIZE = 32;
147 }
148 else version (OpenBSD)
149 {
150     version (Alpha)
151     {
152         enum _ALIGNBYTES = 7;
153         enum _STACKALIGNBYTES = 7;
154         enum _MAX_PAGE_SHIFT = 13;
155     }
156     else version (X86_64)
157     {
158         enum _ALIGNBYTES = c_long.sizeof - 1;
159         enum _STACKALIGNBYTES = 15;
160         enum _MAX_PAGE_SHIFT = 12;
161     }
162     else version (AArch64)
163     {
164         enum _ALIGNBYTES = c_long.sizeof - 1;
165         enum _STACKALIGNBYTES = 15;
166         enum _MAX_PAGE_SHIFT = 12;
167     }
168     else version (ARM)
169     {
170         enum _ALIGNBYTES = 7;
171         enum _STACKALIGNBYTES = 7;
172         enum _MAX_PAGE_SHIFT = 12;
173     }
174     else version (HPPA)
175     {
176         enum _ALIGNBYTES = 7;
177         enum _STACKALIGNBYTES = 7;
178         enum _MAX_PAGE_SHIFT = 12;
179     }
180     else version (X86)
181     {
182         enum _ALIGNBYTES = 3;
183         enum _STACKALIGNBYTES = 15;
184         enum _MAX_PAGE_SHIFT = 12;
185     }
186     else version (PPC)
187     {
188         enum _ALIGNBYTES = 7;
189         enum _STACKALIGNBYTES = 15;
190         enum _MAX_PAGE_SHIFT = 12;
191     }
192     else version (SPARC64)
193     {
194         enum _ALIGNBYTES = 15;
195         enum _STACKALIGNBYTES = 15;
196         enum _MAX_PAGE_SHIFT = 13;
197     }
198     else
199         static assert(false, "Architecture not supported.");
200 }
201 else version (Solaris)
202 {
203     enum _FILE_OFFSET_BITS = 64;
204     enum __REDIRECT = false;
205 
206     enum __USE_FILE_OFFSET64 = _FILE_OFFSET_BITS == 64;
207     enum __USE_LARGEFILE = __USE_FILE_OFFSET64 && !__REDIRECT;
208     enum __USE_LARGEFILE64 = __USE_FILE_OFFSET64 && !__REDIRECT;
209 
210     deprecated("use _XOPEN_SOURCE >= 600")
211     {
212         enum __USE_XOPEN2K      = _XOPEN_SOURCE >= 600;
213         enum __USE_XOPEN2KXSI   = _XOPEN_SOURCE >= 600;
214     }
215     deprecated("use _XOPEN_SOURCE >= 700")
216     {
217         enum __USE_XOPEN2K8     = _XOPEN_SOURCE >= 700;
218         enum __USE_XOPEN2K8XSI  = _XOPEN_SOURCE >= 700;
219     }
220 
221     version (D_LP64)
222         enum __WORDSIZE = 64;
223     else
224         enum __WORDSIZE = 32;
225 }