summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2014-11-25 21:57:41 +0000
committerEric Fiselier <eric@efcs.ca>2014-11-25 21:57:41 +0000
commit6cb69ffa0a86c7c41d357a6e0dcb05c72308dd6b (patch)
tree4c857ff0fde7c03d0de1a73b19ace1e94b678f1a
parentbd0000808db5dc8af36394696b706471856070e2 (diff)
Fixes to get libc++ building on sun solaris. Patch from C Bergstrom.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@222794 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/__config2
-rw-r--r--include/__locale4
-rw-r--r--include/support/solaris/xlocale.h2
-rw-r--r--include/tuple4
-rw-r--r--lib/CMakeLists.txt3
-rw-r--r--src/support/solaris/xlocale.c2
6 files changed, 13 insertions, 4 deletions
diff --git a/include/__config b/include/__config
index d34bb7cc2..e1e23594b 100644
--- a/include/__config
+++ b/include/__config
@@ -644,6 +644,8 @@ template <unsigned> 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/include/__locale b/include/__locale
index 5ccd795b8..47116200e 100644
--- a/include/__locale
+++ b/include/__locale
@@ -29,8 +29,10 @@
# if __ANDROID_API__ <= 20
# include <support/android/locale_bionic.h>
# endif
+#elif defined(__sun__)
+# include <support/solaris/xlocale.h>
#elif (defined(__GLIBC__) || defined(__APPLE__) || defined(__FreeBSD__) \
- || defined(__sun__) || defined(__EMSCRIPTEN__) || defined(__IBMCPP__))
+ || defined(__EMSCRIPTEN__) || defined(__IBMCPP__))
# include <xlocale.h>
#endif // __GLIBC__ || __APPLE__ || __FreeBSD__ || __sun__ || __EMSCRIPTEN__ || __IBMCPP__
diff --git a/include/support/solaris/xlocale.h b/include/support/solaris/xlocale.h
index 875a39add..6b5b544da 100644
--- a/include/support/solaris/xlocale.h
+++ b/include/support/solaris/xlocale.h
@@ -14,6 +14,8 @@
#ifndef __XLOCALE_H_INCLUDED
#define __XLOCALE_H_INCLUDED
+#include <stdlib.h>
+
#ifdef __cplusplus
extern "C" {
#endif
diff --git a/include/tuple b/include/tuple
index aa7185c86..5fc27f982 100644
--- a/include/tuple
+++ b/include/tuple
@@ -376,9 +376,9 @@ template <class ..._Tp>
_LIBCPP_INLINE_VISIBILITY
void __swallow(_Tp&&...) _NOEXCEPT {}
-template <bool ..._B>
+template <bool ..._Pred>
struct __all
- : is_same<__all<_B...>, __all<(_B, true)...>>
+ : is_same<__all<_Pred...>, __all<(_Pred, true)...>>
{ };
template <class _Tp>
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 318c4ce6c..12e9f4ad6 100644
--- a/lib/CMakeLists.txt
+++ b/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/src/support/solaris/xlocale.c b/src/support/solaris/xlocale.c
index 39dd8e368..81750a8b9 100644
--- a/src/support/solaris/xlocale.c
+++ b/src/support/solaris/xlocale.c
@@ -17,7 +17,7 @@
#include <limits.h>
#include <assert.h>
#include <sys/localedef.h>
-#include "xlocale.h"
+#include "support/solaris/xlocale.h"
static _LC_locale_t *__C_locale;