xref: /netbsd-src/external/gpl3/gcc/dist/libphobos/libdruntime/core/sys/posix/config.d (revision 0a3071956a3a9fdebdbf7f338cf2d439b45fc728)
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 @system:
23 
24 enum _XOPEN_SOURCE     = 600;
25 enum _POSIX_SOURCE     = true;
26 enum _POSIX_C_SOURCE   = 200112L;
27 
version(CRuntime_Glibc)28 version (CRuntime_Glibc)
29 {
30     // man 7 feature_test_macros
31     // http://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html
32     enum _GNU_SOURCE         = false;
33     enum _DEFAULT_SOURCE     = false;
34     enum _ATFILE_SOURCE      = false;
35 
36     // _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for _DEFAULT_SOURCE.
37     deprecated("use _DEFAULT_SOURCE")
38     {
39         enum _BSD_SOURCE = false;
40         enum _SVID_SOURCE = false;
41     }
42 
43     enum _FILE_OFFSET_BITS   = 64;
44     // <sys/cdefs.h>
45     enum __REDIRECT          = false;
46 
47     enum _REENTRANT          = true; // set by compiler when linking -pthread
48 
49     // deduced <features.h>
50     enum __USE_FILE_OFFSET64 = _FILE_OFFSET_BITS == 64;
51     enum __USE_LARGEFILE     = __USE_FILE_OFFSET64 && !__REDIRECT;
52     enum __USE_LARGEFILE64   = __USE_FILE_OFFSET64 && !__REDIRECT;
53 
54     deprecated("use _XOPEN_SOURCE >= 600")
55     {
56         enum __USE_XOPEN2K      = _XOPEN_SOURCE >= 600;
57         enum __USE_XOPEN2KXSI   = _XOPEN_SOURCE >= 600;
58     }
59     deprecated("use _XOPEN_SOURCE >= 700")
60     {
61         enum __USE_XOPEN2K8     = _XOPEN_SOURCE >= 700;
62         enum __USE_XOPEN2K8XSI  = _XOPEN_SOURCE >= 700;
63     }
64 
65     deprecated("use _DEFAULT_SOURCE")
66     enum __USE_MISC          = _DEFAULT_SOURCE;
67     deprecated("use _ATFILE_SOURCE")
68     enum __USE_ATFILE        = _ATFILE_SOURCE;
69     deprecated("use _GNU_SOURCE")
70     enum __USE_GNU           = _GNU_SOURCE;
71     deprecated("use _REENTRANT")
72     enum __USE_REENTRANT     = _REENTRANT;
73 
74     version (D_LP64)
75         enum __WORDSIZE = 64;
76     else
77         enum __WORDSIZE = 32;
78 }
version(CRuntime_Musl)79 else version (CRuntime_Musl)
80 {
81     enum _GNU_SOURCE         = false;
82     enum _DEFAULT_SOURCE     = false;
83     enum _ATFILE_SOURCE      = false;
84 
85     // off_t is always 64 bits on Musl
86     enum _FILE_OFFSET_BITS   = 64;
87 
88     // Not present in Musl sources
89     enum __REDIRECT          = false;
90 
91     // Those three are irrelevant for Musl as it always uses 64 bits off_t
92     enum __USE_FILE_OFFSET64 = _FILE_OFFSET_BITS == 64;
93     enum __USE_LARGEFILE     = __USE_FILE_OFFSET64 && !__REDIRECT;
94     enum __USE_LARGEFILE64   = __USE_FILE_OFFSET64 && !__REDIRECT;
95 
96     version (D_LP64)
97         enum __WORDSIZE = 64;
98     else
99         enum __WORDSIZE = 32;
100 }
version(CRuntime_UClibc)101 else version (CRuntime_UClibc)
102 {
103     enum _GNU_SOURCE         = false;
104     enum _DEFAULT_SOURCE     = false;
105     enum _ATFILE_SOURCE      = false;
106 
107     enum _FILE_OFFSET_BITS   = 64;
108     enum __REDIRECT          = false;
109 
110     enum _REENTRANT          = true;
111 
112     enum __USE_FILE_OFFSET64 = _FILE_OFFSET_BITS == 64;
113     enum __USE_LARGEFILE     = __USE_FILE_OFFSET64 && !__REDIRECT;
114     enum __USE_LARGEFILE64   = __USE_FILE_OFFSET64 && !__REDIRECT;
115 
116     deprecated("use _XOPEN_SOURCE >= 600")
117     {
118         enum __USE_XOPEN2K      = _XOPEN_SOURCE >= 600;
119         enum __USE_XOPEN2KXSI   = _XOPEN_SOURCE >= 600;
120     }
121     deprecated("use _XOPEN_SOURCE >= 700")
122     {
123         enum __USE_XOPEN2K8     = _XOPEN_SOURCE >= 700;
124         enum __USE_XOPEN2K8XSI  = _XOPEN_SOURCE >= 700;
125     }
126 
127     deprecated("use _DEFAULT_SOURCE")
128     enum __USE_MISC          = _DEFAULT_SOURCE;
129     deprecated("use _ATFILE_SOURCE")
130     enum __USE_ATFILE        = _ATFILE_SOURCE;
131     deprecated("use _GNU_SOURCE")
132     enum __USE_GNU           = _GNU_SOURCE;
133     deprecated("use _REENTRANT")
134     enum __USE_REENTRANT     = _REENTRANT;
135 
136     version (D_LP64)
137         enum __WORDSIZE = 64;
138     else
139         enum __WORDSIZE = 32;
140 }
version(CRuntime_Bionic)141 else version (CRuntime_Bionic)
142 {
143     enum _GNU_SOURCE         = false;
144     enum _DEFAULT_SOURCE     = false;
145     enum _ATFILE_SOURCE      = false;
146 
147     enum __USE_FILE_OFFSET64 = false; // see https://android.googlesource.com/platform/bionic/+/master/docs/32-bit-abi.md
148     deprecated("use _GNU_SOURCE")
149     enum __USE_GNU           = _GNU_SOURCE;
150 
151     version (D_LP64)
152         enum __WORDSIZE = 64;
153     else
154         enum __WORDSIZE = 32;
155 }
version(OpenBSD)156 else version (OpenBSD)
157 {
158     version (Alpha)
159     {
160         enum _ALIGNBYTES = 7;
161         enum _STACKALIGNBYTES = 7;
162         enum _MAX_PAGE_SHIFT = 13;
163     }
164     else version (X86_64)
165     {
166         enum _ALIGNBYTES = c_long.sizeof - 1;
167         enum _STACKALIGNBYTES = 15;
168         enum _MAX_PAGE_SHIFT = 12;
169     }
170     else version (AArch64)
171     {
172         enum _ALIGNBYTES = c_long.sizeof - 1;
173         enum _STACKALIGNBYTES = 15;
174         enum _MAX_PAGE_SHIFT = 12;
175     }
176     else version (ARM)
177     {
178         enum _ALIGNBYTES = 7;
179         enum _STACKALIGNBYTES = 7;
180         enum _MAX_PAGE_SHIFT = 12;
181     }
182     else version (HPPA)
183     {
184         enum _ALIGNBYTES = 7;
185         enum _STACKALIGNBYTES = 7;
186         enum _MAX_PAGE_SHIFT = 12;
187     }
188     else version (X86)
189     {
190         enum _ALIGNBYTES = 3;
191         enum _STACKALIGNBYTES = 15;
192         enum _MAX_PAGE_SHIFT = 12;
193     }
194     else version (PPC)
195     {
196         enum _ALIGNBYTES = 7;
197         enum _STACKALIGNBYTES = 15;
198         enum _MAX_PAGE_SHIFT = 12;
199     }
200     else version (SPARC64)
201     {
202         enum _ALIGNBYTES = 15;
203         enum _STACKALIGNBYTES = 15;
204         enum _MAX_PAGE_SHIFT = 13;
205     }
206     else
207         static assert(false, "Architecture not supported.");
208 }
version(Solaris)209 else version (Solaris)
210 {
211     enum _FILE_OFFSET_BITS = 64;
212     enum __REDIRECT = false;
213 
214     enum __USE_FILE_OFFSET64 = _FILE_OFFSET_BITS == 64;
215     enum __USE_LARGEFILE = __USE_FILE_OFFSET64 && !__REDIRECT;
216     enum __USE_LARGEFILE64 = __USE_FILE_OFFSET64 && !__REDIRECT;
217 
218     deprecated("use _XOPEN_SOURCE >= 600")
219     {
220         enum __USE_XOPEN2K      = _XOPEN_SOURCE >= 600;
221         enum __USE_XOPEN2KXSI   = _XOPEN_SOURCE >= 600;
222     }
223     deprecated("use _XOPEN_SOURCE >= 700")
224     {
225         enum __USE_XOPEN2K8     = _XOPEN_SOURCE >= 700;
226         enum __USE_XOPEN2K8XSI  = _XOPEN_SOURCE >= 700;
227     }
228 
229     version (D_LP64)
230         enum __WORDSIZE = 64;
231     else
232         enum __WORDSIZE = 32;
233 }
234