summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libcxx/include/complex.h12
-rw-r--r--libcxx/include/ctype.h4
-rw-r--r--libcxx/include/errno.h4
-rw-r--r--libcxx/include/fenv.h4
-rw-r--r--libcxx/include/float.h4
-rw-r--r--libcxx/include/inttypes.h4
-rw-r--r--libcxx/include/limits.h6
-rw-r--r--libcxx/include/locale.h4
-rw-r--r--libcxx/include/math.h4
-rw-r--r--libcxx/include/setjmp.h4
-rw-r--r--libcxx/include/stdbool.h4
-rw-r--r--libcxx/include/stddef.h4
-rw-r--r--libcxx/include/stdint.h4
-rw-r--r--libcxx/include/stdio.h4
-rw-r--r--libcxx/include/stdlib.h4
-rw-r--r--libcxx/include/string.h4
-rw-r--r--libcxx/include/tgmath.h14
-rw-r--r--libcxx/include/wchar.h4
18 files changed, 60 insertions, 32 deletions
diff --git a/libcxx/include/complex.h b/libcxx/include/complex.h
index a2814669c7d4..a3da21c843f3 100644
--- a/libcxx/include/complex.h
+++ b/libcxx/include/complex.h
@@ -24,13 +24,9 @@
#endif
#ifdef __cplusplus
-
-#include <ccomplex>
-
-#else // __cplusplus
-
-#include_next <complex.h>
-
-#endif // __cplusplus
+# include <ccomplex>
+#elif __has_include_next(<complex.h>)
+# include_next <complex.h>
+#endif
#endif // _LIBCPP_COMPLEX_H
diff --git a/libcxx/include/ctype.h b/libcxx/include/ctype.h
index ba0925069c64..728173ed670f 100644
--- a/libcxx/include/ctype.h
+++ b/libcxx/include/ctype.h
@@ -35,7 +35,9 @@ int toupper(int c);
# pragma GCC system_header
#endif
-#include_next <ctype.h>
+#if __has_include_next(<ctype.h>)
+# include_next <ctype.h>
+#endif
#ifdef __cplusplus
diff --git a/libcxx/include/errno.h b/libcxx/include/errno.h
index ea0559f0f5d1..7b02d2b47953 100644
--- a/libcxx/include/errno.h
+++ b/libcxx/include/errno.h
@@ -28,7 +28,9 @@ Macros:
# pragma GCC system_header
#endif
-#include_next <errno.h>
+#if __has_include_next(<errno.h>)
+# include_next <errno.h>
+#endif
#ifdef __cplusplus
diff --git a/libcxx/include/fenv.h b/libcxx/include/fenv.h
index a9ba6800245b..15e41568cbf7 100644
--- a/libcxx/include/fenv.h
+++ b/libcxx/include/fenv.h
@@ -56,7 +56,9 @@ int feupdateenv(const fenv_t* envp);
# pragma GCC system_header
#endif
-#include_next <fenv.h>
+#if __has_include_next(<fenv.h>)
+# include_next <fenv.h>
+#endif
#ifdef __cplusplus
diff --git a/libcxx/include/float.h b/libcxx/include/float.h
index 606081251dfb..9e5f711fab83 100644
--- a/libcxx/include/float.h
+++ b/libcxx/include/float.h
@@ -76,7 +76,9 @@ Macros:
# pragma GCC system_header
#endif
-#include_next <float.h>
+#if __has_include_next(<float.h>)
+# include_next <float.h>
+#endif
#ifdef __cplusplus
diff --git a/libcxx/include/inttypes.h b/libcxx/include/inttypes.h
index e0fd71f9b65d..b755526b8492 100644
--- a/libcxx/include/inttypes.h
+++ b/libcxx/include/inttypes.h
@@ -248,7 +248,9 @@ uintmax_t wcstoumax(const wchar_t* restrict nptr, wchar_t** restrict endptr, int
# define __STDC_FORMAT_MACROS
#endif
-#include_next <inttypes.h>
+#if __has_include_next(<inttypes.h>)
+# include_next <inttypes.h>
+#endif
#ifdef __cplusplus
diff --git a/libcxx/include/limits.h b/libcxx/include/limits.h
index 3e1e85a8a0b4..032a90967d0c 100644
--- a/libcxx/include/limits.h
+++ b/libcxx/include/limits.h
@@ -44,7 +44,11 @@ Macros:
#endif
#ifndef __GNUC__
-#include_next <limits.h>
+
+# if __has_include_next(<limits.h>)
+# include_next <limits.h>
+# endif
+
#else
// GCC header limits.h recursively includes itself through another header called
// syslimits.h for some reason. This setup breaks down if we directly
diff --git a/libcxx/include/locale.h b/libcxx/include/locale.h
index 17c0a705a009..3fb812035a52 100644
--- a/libcxx/include/locale.h
+++ b/libcxx/include/locale.h
@@ -43,6 +43,8 @@ Functions:
# pragma GCC system_header
#endif
-#include_next <locale.h>
+#if __has_include_next(<locale.h>)
+# include_next <locale.h>
+#endif
#endif // _LIBCPP_LOCALE_H
diff --git a/libcxx/include/math.h b/libcxx/include/math.h
index d5a7095a596a..d60943086036 100644
--- a/libcxx/include/math.h
+++ b/libcxx/include/math.h
@@ -297,7 +297,9 @@ long double truncl(long double x);
# pragma GCC system_header
#endif
-#include_next <math.h>
+# if __has_include_next(<math.h>)
+# include_next <math.h>
+# endif
#ifdef __cplusplus
diff --git a/libcxx/include/setjmp.h b/libcxx/include/setjmp.h
index de4f9edf4886..f4a2bbcb0bd3 100644
--- a/libcxx/include/setjmp.h
+++ b/libcxx/include/setjmp.h
@@ -31,7 +31,9 @@ void longjmp(jmp_buf env, int val);
# pragma GCC system_header
#endif
-#include_next <setjmp.h>
+#if __has_include_next(<setjmp.h>)
+# include_next <setjmp.h>
+#endif
#ifdef __cplusplus
diff --git a/libcxx/include/stdbool.h b/libcxx/include/stdbool.h
index 0bc1aa8304ad..5bba00568dff 100644
--- a/libcxx/include/stdbool.h
+++ b/libcxx/include/stdbool.h
@@ -24,7 +24,9 @@ Macros:
# pragma GCC system_header
#endif
-#include_next <stdbool.h>
+#if __has_include_next(<stdbool.h>)
+# include_next <stdbool.h>
+#endif
#ifdef __cplusplus
#undef bool
diff --git a/libcxx/include/stddef.h b/libcxx/include/stddef.h
index 19e344f2a000..f1725db06212 100644
--- a/libcxx/include/stddef.h
+++ b/libcxx/include/stddef.h
@@ -42,7 +42,9 @@ Types:
# pragma GCC system_header
#endif
-#include_next <stddef.h>
+# if __has_include_next(<stddef.h>)
+# include_next <stddef.h>
+# endif
#ifdef __cplusplus
typedef decltype(nullptr) nullptr_t;
diff --git a/libcxx/include/stdint.h b/libcxx/include/stdint.h
index ee71f62ab095..fa7b011c71ae 100644
--- a/libcxx/include/stdint.h
+++ b/libcxx/include/stdint.h
@@ -120,6 +120,8 @@ Macros:
# define __STDC_CONSTANT_MACROS
#endif
-#include_next <stdint.h>
+#if __has_include_next(<stdint.h>)
+# include_next <stdint.h>
+#endif
#endif // _LIBCPP_STDINT_H
diff --git a/libcxx/include/stdio.h b/libcxx/include/stdio.h
index ad1b4c05f1fa..cea43aa7680b 100644
--- a/libcxx/include/stdio.h
+++ b/libcxx/include/stdio.h
@@ -104,7 +104,9 @@ void perror(const char* s);
# pragma GCC system_header
#endif
-#include_next <stdio.h>
+# if __has_include_next(<stdio.h>)
+# include_next <stdio.h>
+# endif
#ifdef __cplusplus
diff --git a/libcxx/include/stdlib.h b/libcxx/include/stdlib.h
index e4dce9c54546..64581b67f245 100644
--- a/libcxx/include/stdlib.h
+++ b/libcxx/include/stdlib.h
@@ -90,7 +90,9 @@ void *aligned_alloc(size_t alignment, size_t size); // C11
# pragma GCC system_header
#endif
-#include_next <stdlib.h>
+# if __has_include_next(<stdlib.h>)
+# include_next <stdlib.h>
+# endif
#ifdef __cplusplus
extern "C++" {
diff --git a/libcxx/include/string.h b/libcxx/include/string.h
index 082c632a29bc..627cbae781c1 100644
--- a/libcxx/include/string.h
+++ b/libcxx/include/string.h
@@ -57,7 +57,9 @@ size_t strlen(const char* s);
# pragma GCC system_header
#endif
-#include_next <string.h>
+#if __has_include_next(<string.h>)
+# include_next <string.h>
+#endif
// MSVCRT, GNU libc and its derivates may already have the correct prototype in
// <string.h>. This macro can be defined by users if their C library provides
diff --git a/libcxx/include/tgmath.h b/libcxx/include/tgmath.h
index c65091708a9a..e6f0a4ab2611 100644
--- a/libcxx/include/tgmath.h
+++ b/libcxx/include/tgmath.h
@@ -24,13 +24,11 @@
#endif
#ifdef __cplusplus
-
-#include <ctgmath>
-
-#else // __cplusplus
-
-#include_next <tgmath.h>
-
-#endif // __cplusplus
+# include <ctgmath>
+#else
+# if __has_include_next(<tgmath.h>)
+# include_next <tgmath.h>
+# endif
+#endif
#endif // _LIBCPP_TGMATH_H
diff --git a/libcxx/include/wchar.h b/libcxx/include/wchar.h
index 0fba53b268ae..c684508dc2cc 100644
--- a/libcxx/include/wchar.h
+++ b/libcxx/include/wchar.h
@@ -120,7 +120,9 @@ size_t wcsrtombs(char* restrict dst, const wchar_t** restrict src, size_t len,
#define __CORRECT_ISO_CPP_WCHAR_H_PROTO
#endif
-#include_next <wchar.h>
+# if __has_include_next(<wchar.h>)
+# include_next <wchar.h>
+# endif
// Determine whether we have const-correct overloads for wcschr and friends.
#if defined(_WCHAR_H_CPLUSPLUS_98_CONFORMANCE_)