diff --git a/libcxx/include/__config b/libcxx/include/__config index d34bb7cc28ad..e1e23594b32b 100644 --- a/libcxx/include/__config +++ b/libcxx/include/__config @@ -644,6 +644,8 @@ template struct __static_assert_check {}; #define _LIBCPP_ELAST __ELASTERROR #elif defined(__APPLE__) // Not _LIBCPP_ELAST needed on Apple +#elif defined(__sun__) +#define _LIBCPP_ELAST ESTALE #else // Warn here so that the person doing the libcxx port has an easier time: #warning This platform's ELAST hasn't been ported yet diff --git a/libcxx/include/__locale b/libcxx/include/__locale index 5ccd795b8774..47116200e26e 100644 --- a/libcxx/include/__locale +++ b/libcxx/include/__locale @@ -29,8 +29,10 @@ # if __ANDROID_API__ <= 20 # include # endif +#elif defined(__sun__) +# include #elif (defined(__GLIBC__) || defined(__APPLE__) || defined(__FreeBSD__) \ - || defined(__sun__) || defined(__EMSCRIPTEN__) || defined(__IBMCPP__)) + || defined(__EMSCRIPTEN__) || defined(__IBMCPP__)) # include #endif // __GLIBC__ || __APPLE__ || __FreeBSD__ || __sun__ || __EMSCRIPTEN__ || __IBMCPP__ diff --git a/libcxx/include/support/solaris/xlocale.h b/libcxx/include/support/solaris/xlocale.h index 875a39add760..6b5b544da27d 100644 --- a/libcxx/include/support/solaris/xlocale.h +++ b/libcxx/include/support/solaris/xlocale.h @@ -14,6 +14,8 @@ #ifndef __XLOCALE_H_INCLUDED #define __XLOCALE_H_INCLUDED +#include + #ifdef __cplusplus extern "C" { #endif diff --git a/libcxx/include/tuple b/libcxx/include/tuple index aa7185c86fa2..5fc27f982790 100644 --- a/libcxx/include/tuple +++ b/libcxx/include/tuple @@ -376,9 +376,9 @@ template _LIBCPP_INLINE_VISIBILITY void __swallow(_Tp&&...) _NOEXCEPT {} -template +template struct __all - : is_same<__all<_B...>, __all<(_B, true)...>> + : is_same<__all<_Pred...>, __all<(_Pred, true)...>> { }; template diff --git a/libcxx/lib/CMakeLists.txt b/libcxx/lib/CMakeLists.txt index 318c4ce6c4c0..12e9f4ad643b 100644 --- a/libcxx/lib/CMakeLists.txt +++ b/libcxx/lib/CMakeLists.txt @@ -3,6 +3,9 @@ file(GLOB LIBCXX_SOURCES ../src/*.cpp) 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) + list(APPEND LIBCXX_SOURCES ${LIBCXX_SOLARIS_SOURCES}) endif() # Add all the headers to the project for IDEs. diff --git a/libcxx/src/support/solaris/xlocale.c b/libcxx/src/support/solaris/xlocale.c index 39dd8e36835e..81750a8b9204 100644 --- a/libcxx/src/support/solaris/xlocale.c +++ b/libcxx/src/support/solaris/xlocale.c @@ -17,7 +17,7 @@ #include #include #include -#include "xlocale.h" +#include "support/solaris/xlocale.h" static _LC_locale_t *__C_locale;