Author: mgorny Date: Tue Oct 18 11:54:59 2016 New Revision: 284494 URL: http://llvm.org/viewvc/llvm-project?rev=284494&view=rev Log: [solaris] Convert the support library to C++ to fix -std=c++11 build
Convert the Solaris xlocale.c compatibility library from plain C to C++ in order to fix the build failures caused by the addition of -std=c++11 to LIBCXX_COMPILE_FLAGS. The additional flag got propagated to the C file, resulting in error with strict compilers. Differential Revision: https://reviews.llvm.org/D25431 Added: libcxx/trunk/src/support/solaris/xlocale.cpp - copied, changed from r284493, libcxx/trunk/src/support/solaris/xlocale.c Removed: libcxx/trunk/src/support/solaris/xlocale.c Modified: libcxx/trunk/lib/CMakeLists.txt Modified: libcxx/trunk/lib/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/lib/CMakeLists.txt?rev=284494&r1=284493&r2=284494&view=diff ============================================================================== --- libcxx/trunk/lib/CMakeLists.txt (original) +++ libcxx/trunk/lib/CMakeLists.txt Tue Oct 18 11:54:59 2016 @@ -6,7 +6,7 @@ if(WIN32) file(GLOB LIBCXX_WIN32_SOURCES ../src/support/win32/*.cpp) list(APPEND LIBCXX_SOURCES ${LIBCXX_WIN32_SOURCES}) elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "SunOS") - file(GLOB LIBCXX_SOLARIS_SOURCES ../src/support/solaris/*.c) + file(GLOB LIBCXX_SOLARIS_SOURCES ../src/support/solaris/*.cpp) list(APPEND LIBCXX_SOURCES ${LIBCXX_SOLARIS_SOURCES}) endif() Removed: libcxx/trunk/src/support/solaris/xlocale.c URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/src/support/solaris/xlocale.c?rev=284493&view=auto ============================================================================== --- libcxx/trunk/src/support/solaris/xlocale.c (original) +++ libcxx/trunk/src/support/solaris/xlocale.c (removed) @@ -1,66 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifdef __sun__ - -#include "support/solaris/xlocale.h" -#include <stdarg.h> -#include <stdio.h> -#include <sys/localedef.h> - - -int isxdigit_l(int __c, locale_t __l) { - return isxdigit(__c); -} - -int iswxdigit_l(wint_t __c, locale_t __l) { - return isxdigit(__c); -} - -// FIXME: This disregards the locale, which is Very Wrong -#define vsnprintf_l(__s, __n, __l, __format, __va) \ - vsnprintf(__s, __n, __format, __va) - -int snprintf_l(char *__s, size_t __n, locale_t __l, const char *__format, ...) -{ - va_list __va; - va_start(__va, __format); - int __res = vsnprintf_l(__s, __n , __l, __format, __va); - va_end(__va); - return __res; -} - -int asprintf_l(char **__s, locale_t __l, const char *__format, ...) { - va_list __va; - va_start(__va, __format); - // FIXME: - int __res = vasprintf(__s, __format, __va); - va_end(__va); - return __res; -} - -int sscanf_l(const char *__s, locale_t __l, const char *__format, ...) { - va_list __va; - va_start(__va, __format); - // FIXME: - int __res = vsscanf(__s, __format, __va); - va_end(__va); - return __res; -} - -size_t mbrtowc_l(wchar_t *__pwc, const char *__pmb, - size_t __max, mbstate_t *__ps, locale_t __loc) { - return mbrtowc(__pwc, __pmb, __max, __ps); -} - -struct lconv *localeconv_l(locale_t __l) { - return localeconv(); -} - -#endif // __sun__ Copied: libcxx/trunk/src/support/solaris/xlocale.cpp (from r284493, libcxx/trunk/src/support/solaris/xlocale.c) URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/src/support/solaris/xlocale.cpp?p2=libcxx/trunk/src/support/solaris/xlocale.cpp&p1=libcxx/trunk/src/support/solaris/xlocale.c&r1=284493&r2=284494&rev=284494&view=diff ============================================================================== --- libcxx/trunk/src/support/solaris/xlocale.c (original) +++ libcxx/trunk/src/support/solaris/xlocale.cpp Tue Oct 18 11:54:59 2016 @@ -14,6 +14,7 @@ #include <stdio.h> #include <sys/localedef.h> +extern "C" { int isxdigit_l(int __c, locale_t __l) { return isxdigit(__c); @@ -63,4 +64,6 @@ struct lconv *localeconv_l(locale_t __l) return localeconv(); } +}; + #endif // __sun__ _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits