toolchain/musl: update to 1.2.2
[openwrt/staging/chunkeey.git] / toolchain / musl / include / features.h
1 #ifndef _FEATURES_H
2 #define _FEATURES_H
3
4 #if defined(_ALL_SOURCE) && !defined(_GNU_SOURCE)
5 #define _GNU_SOURCE 1
6 #endif
7
8 #if defined(_DEFAULT_SOURCE) && !defined(_BSD_SOURCE)
9 #define _BSD_SOURCE 1
10 #endif
11
12 #if !defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE) \
13 && !defined(_XOPEN_SOURCE) && !defined(_GNU_SOURCE) \
14 && !defined(_BSD_SOURCE) && !defined(__STRICT_ANSI__)
15 #define _BSD_SOURCE 1
16 #define _XOPEN_SOURCE 700
17 #endif
18
19 #if __STDC_VERSION__ >= 199901L
20 #define __restrict restrict
21 #elif !defined(__GNUC__)
22 #define __restrict
23 #endif
24
25 #if __STDC_VERSION__ >= 199901L || defined(__cplusplus)
26 #define __inline inline
27 #elif !defined(__GNUC__)
28 #define __inline
29 #endif
30
31 #if __STDC_VERSION__ >= 201112L
32 #elif defined(__GNUC__)
33 #define _Noreturn __attribute__((__noreturn__))
34 #else
35 #define _Noreturn
36 #endif
37
38 #define __REDIR(x,y) __typeof__(x) x __asm__(#y)
39
40 /* Convenience macros to test the versions of glibc and gcc.
41 Use them like this:
42 #if __GNUC_PREREQ (2,8)
43 ... code requiring gcc 2.8 or later ...
44 #endif
45 Note - they won't work for gcc1 or glibc1, since the _MINOR macros
46 were not defined then. */
47 #if defined __GNUC__ && defined __GNUC_MINOR__
48 # define __GNUC_PREREQ(maj, min) \
49 ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
50 #else
51 # define __GNUC_PREREQ(maj, min) 0
52 #endif
53
54 #include <sys/glibc-types.h>
55
56 #endif