17777dab0Sopenharmony_ci#ifndef _FEATURES_H
27777dab0Sopenharmony_ci#define _FEATURES_H
37777dab0Sopenharmony_ci
47777dab0Sopenharmony_ci#if defined(_ALL_SOURCE) && !defined(_GNU_SOURCE)
57777dab0Sopenharmony_ci#define _GNU_SOURCE 1
67777dab0Sopenharmony_ci#endif
77777dab0Sopenharmony_ci
87777dab0Sopenharmony_ci#if defined(_DEFAULT_SOURCE) && !defined(_BSD_SOURCE)
97777dab0Sopenharmony_ci#define _BSD_SOURCE 1
107777dab0Sopenharmony_ci#endif
117777dab0Sopenharmony_ci
127777dab0Sopenharmony_ci#if !defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE) \
137777dab0Sopenharmony_ci && !defined(_XOPEN_SOURCE) && !defined(_GNU_SOURCE) \
147777dab0Sopenharmony_ci && !defined(_BSD_SOURCE) && !defined(__STRICT_ANSI__)
157777dab0Sopenharmony_ci#define _BSD_SOURCE 1
167777dab0Sopenharmony_ci#define _XOPEN_SOURCE 700
177777dab0Sopenharmony_ci#endif
187777dab0Sopenharmony_ci
197777dab0Sopenharmony_ci#if __STDC_VERSION__ >= 199901L
207777dab0Sopenharmony_ci#define __restrict restrict
217777dab0Sopenharmony_ci#elif !defined(__GNUC__)
227777dab0Sopenharmony_ci#define __restrict
237777dab0Sopenharmony_ci#endif
247777dab0Sopenharmony_ci
257777dab0Sopenharmony_ci#if __STDC_VERSION__ >= 199901L || defined(__cplusplus)
267777dab0Sopenharmony_ci#define __inline inline
277777dab0Sopenharmony_ci#elif !defined(__GNUC__)
287777dab0Sopenharmony_ci#define __inline
297777dab0Sopenharmony_ci#endif
307777dab0Sopenharmony_ci
317777dab0Sopenharmony_ci#if __STDC_VERSION__ >= 201112L
327777dab0Sopenharmony_ci#elif defined(__GNUC__)
337777dab0Sopenharmony_ci#define _Noreturn __attribute__((__noreturn__))
347777dab0Sopenharmony_ci#else
357777dab0Sopenharmony_ci#define _Noreturn
367777dab0Sopenharmony_ci#endif
377777dab0Sopenharmony_ci
387777dab0Sopenharmony_ci#define __REDIR(x,y) __typeof__(x) x __asm__(#y)
397777dab0Sopenharmony_ci
407777dab0Sopenharmony_ci#endif
41