summaryrefslogtreecommitdiff
path: root/include/features.h
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-09-07 23:13:55 -0400
committerRich Felker <dalias@aerifal.cx>2012-09-07 23:13:55 -0400
commitc1a9658bd19245ff0fb52d3da567815d822fb622 (patch)
tree36af789c4a0ebc8a1af3c49eab9edb34f5dbf869 /include/features.h
parent9f65796c35bd93a1de42752ce8af901acfe4b1a4 (diff)
downloadmusl-c1a9658bd19245ff0fb52d3da567815d822fb622.tar.gz
default features: make musl usable without feature test macros
the old behavior of exposing nothing except plain ISO C can be obtained by defining __STRICT_ANSI__ or using a compiler option (such as -std=c99) that predefines it. the new default featureset is POSIX with XSI plus _BSD_SOURCE. any explicit feature test macros will inhibit the default. installation docs have also been updated to reflect this change.
Diffstat (limited to 'include/features.h')
-rw-r--r--include/features.h29
1 files changed, 28 insertions, 1 deletions
diff --git a/include/features.h b/include/features.h
index 851afb66..a7919f37 100644
--- a/include/features.h
+++ b/include/features.h
@@ -1 +1,28 @@
-#warning "features.h is bogus"
+#ifndef _FEATURES_H
+#define _FEATURES_H
+
+#if !defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE) \
+ && !defined(_XOPEN_SOURCE) && !defined(_GNU_SOURCE) \
+ && !defined(_BSD_SOURCE) && !defined(__STRICT_ANSI__)
+#define _BSD_SOURCE 1
+#define _XOPEN_SOURCE 700
+#endif
+
+#if __STDC_VERSION__ >= 199901L
+#define __restrict restrict
+#elif !defined(__GNUC__)
+#define __restrict
+#endif
+
+#if __STDC_VERSION__ >= 199901L || defined(__cplusplus)
+#define __inline inline
+#endif
+
+#if __STDC_VERSION__ >= 201112L
+#elif defined(__GNUC__)
+#define _Noreturn __attribute__((__noreturn__))
+#else
+#define _Noreturn
+#endif
+
+#endif