aboutsummaryrefslogtreecommitdiff
path: root/arch/all/core/include/features.h
blob: 6d205aec8abc4a57430583780733ffb2d74eb80c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/* ****************************************************************************
 * C features.
 * ************************************************************************* */
/* This file turns the feature macros, defined by the compiler or by the
 * user, into internal macros used by the library, in order to set the
 * exact environment the user has specified.
 *
 * Here are the C-related feature macros:
 *
 * `__STDC__`:
 *    ISO Standard C compliance for the compiler.
 *    Should be 1; could be defined to 0 by the compiler.
 *
 * `__STDC_VERSION__`:
 *    ISO Standard C version for the compiler.
 *    (== 199409L) ISO C95;
 *    (== 199901L) ISO C99;
 *    (== 201112L) ISO C11.
 *
 * `__STRICT_ANSI__`:
 *    Strict ISO C conformance, enabled on GCC using `-ansi`.
 *    This also disables GNU compiler extensions.
 *
 * `_ISOC99_SOURCE`, `_ISOC11_SOURCE`:
 *    Extensions to ISO C89 from ISO C99 and ISO C11.
 *    Can be considered as hacks to the standard pre-defined macros testing.
 *
 * `__STDC_WANT_LIB_EXT2__`:
 *    Extensions to ISO C99 from TR 27431-2:2010.
 *
 * `__STDC_WANT_IEC_60559_BFP_EXT__`:
 *    Extensions to ISO C11 from TS 18661-1:2014.
 *
 * `__STDC_WANT_IEC_60559_FUNCS_EXT__`:
 *    Extensions to ISO C11 from TS 18661-4:2015.
 *
 * Here are the POSIX/SUS-related feature macros:
 *
 * `_POSIX_SOURCE`:
 *    IEEE Std 1003.1.
 *
 * `_POSIX_C_SOURCE`:
 *    (== 1)       Equivalent to `_POSIX_SOURCE`;
 *    (>= 2)       Add IEEE Std 1003.2;
 *    (>= 199309L) Add IEEE Std 1003.1b-1993;
 *    (>= 199506L) Add IEEE Std 1003.1c-1995;
 *    (>= 200112L) All of IEEE 1003.1-2004;
 *    (>= 200809L) All of IEEE 1003.1-2008.
 *
 * `_XOPEN_SOURCE`:
 *    Include POSIX and XPG elements.
 *    (== 500) Single Unix conformance is wanted;
 *    (== 600) Sixth revision;
 *    (== 700) Seventh revision.
 *
 * `_XOPEN_SOURCE_EXTENDED`:
 *    XPG and X/Open Unix extensions.
 *
 * `_LARGEFILE_SOURCE`:
 *    Some more functions for correct standard I/O.
 *
 * `_LARGEFILE64_SOURCE`:
 *    Additional functionnality from LFS for large files.
 *
 * `_FILE_OFFSET_BITS=N`:
 *    Select default filesystem interface.
 *
 * `_ATFILE_SOURCE`:
 *    Additional *at interfaces.
 *
 * `_GNU_SOURCE`:
 *    Add everything above, plus GNU extensions.
 *
 * `_DEFAULT_SOURCE`:
 *    The default set of features (taking precedence over `__STRICT_ANSI__`.
 *
 * `_FORTIFY_SOURCE`:
 *    Add security hardening to many library functions.
 *    Set to 1 or 2; 2 performs stricter checks than 1.
 *
 * `_REENTRANT`, `_THREAD_SAFE`:
 *    Obsolete; equivalent to `_POSIX_C_SOURCE=199506L. */