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 */ 16module core.sys.posix.config; 17 18public import core.stdc.config; 19 20version (Posix): 21extern (C) nothrow @nogc: 22@system: 23 24enum _XOPEN_SOURCE = 600; 25enum _POSIX_SOURCE = true; 26enum _POSIX_C_SOURCE = 200112L; 27 28version (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} 79else 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} 101else 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} 141else 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} 156else 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} 209else 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