From 38e7a30143bfe1fa9067376cfefd18556e90512a Mon Sep 17 00:00:00 2001 From: Eric Fiselier Date: Fri, 6 Nov 2015 06:30:12 +0000 Subject: [PATCH] Cleanup foo.h headers and __config to work in C git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@252274 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/__config | 11 +++++++++-- include/errno.h | 4 ++++ include/float.h | 4 ++++ include/inttypes.h | 2 +- include/setjmp.h | 4 ++++ include/stdlib.h | 2 ++ 6 files changed, 24 insertions(+), 3 deletions(-) diff --git a/include/__config b/include/__config index b7e353272..1fe96d0ba 100644 --- a/include/__config +++ b/include/__config @@ -11,10 +11,16 @@ #ifndef _LIBCPP_CONFIG #define _LIBCPP_CONFIG -#if !defined(_MSC_VER) || defined(__clang__) +#if defined(_MSC_VER) && !defined(__clang__) +#define _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER +#endif + +#ifndef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER #pragma GCC system_header #endif +#ifdef __cplusplus + #ifdef __GNUC__ #define _GNUC_VER (__GNUC__ * 100 + __GNUC_MINOR__) #else @@ -526,7 +532,6 @@ using namespace _LIBCPP_NAMESPACE __attribute__((__strong__)); #elif defined(_LIBCPP_MSVC) #define _LIBCPP_HAS_NO_TEMPLATE_ALIASES -#define _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER #define _LIBCPP_HAS_NO_CONSTEXPR #define _LIBCPP_HAS_NO_CXX14_CONSTEXPR #define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES @@ -811,4 +816,6 @@ extern "C" void __sanitizer_annotate_contiguous_container( #define _LIBCPP_HAS_NO_ATOMIC_HEADER #endif +#endif // __cplusplus + #endif // _LIBCPP_CONFIG diff --git a/include/errno.h b/include/errno.h index 556ef6112..ee6429110 100644 --- a/include/errno.h +++ b/include/errno.h @@ -31,6 +31,8 @@ Macros: #include_next +#ifdef __cplusplus + #if !defined(EOWNERDEAD) || !defined(ENOTRECOVERABLE) #ifdef ELAST @@ -391,4 +393,6 @@ static const int __elast2 = 105; #define EMLINK 9979 #endif +#endif // __cplusplus + #endif // _LIBCPP_ERRNO_H diff --git a/include/float.h b/include/float.h index f890c6808..1acfdc618 100644 --- a/include/float.h +++ b/include/float.h @@ -68,6 +68,8 @@ Macros: #include_next +#ifdef __cplusplus + #ifndef FLT_EVAL_METHOD #define FLT_EVAL_METHOD __FLT_EVAL_METHOD__ #endif @@ -76,4 +78,6 @@ Macros: #define DECIMAL_DIG __DECIMAL_DIG__ #endif +#endif // __cplusplus + #endif // _LIBCPP_FLOAT_H diff --git a/include/inttypes.h b/include/inttypes.h index 328e57e5e..5c5618bef 100644 --- a/include/inttypes.h +++ b/include/inttypes.h @@ -246,6 +246,6 @@ uintmax_t wcstoumax(const wchar_t* restrict nptr, wchar_t** restrict endptr, int #undef imaxabs #undef imaxdiv -#endif +#endif // __cplusplus #endif // _LIBCPP_INTTYPES_H diff --git a/include/setjmp.h b/include/setjmp.h index ec4a5f695..464b4a540 100644 --- a/include/setjmp.h +++ b/include/setjmp.h @@ -34,8 +34,12 @@ void longjmp(jmp_buf env, int val); #include_next +#ifdef __cplusplus + #ifndef setjmp #define setjmp(env) setjmp(env) #endif +#endif // __cplusplus + #endif // _LIBCPP_SETJMP_H diff --git a/include/stdlib.h b/include/stdlib.h index 919faa169..12fd676a1 100644 --- a/include/stdlib.h +++ b/include/stdlib.h @@ -94,6 +94,7 @@ void *aligned_alloc(size_t alignment, size_t size); // C11 #include_next #ifdef __cplusplus + extern "C++" { #ifdef _LIBCPP_MSVCRT @@ -123,6 +124,7 @@ inline _LIBCPP_INLINE_VISIBILITY lldiv_t div(long long __x, long long __y) _NOEX #endif // _LIBCPP_MSVCRT / __sun__ / _AIX } // extern "C++" + #endif // __cplusplus #endif // _LIBCPP_STDLIB_H