From 65a1cc42d0db7450fb80b7d479f0f406db7853f1 Mon Sep 17 00:00:00 2001 From: Christian Neukirchen Date: Fri, 11 Mar 2016 15:48:41 +0100 Subject: [PATCH] libcxx: update to 3.8.0. --- .../libcxx/files/libcxx-0001-musl-hacks.patch | 107 ++++++++++++++++++ srcpkgs/libcxx/template | 13 ++- 2 files changed, 118 insertions(+), 2 deletions(-) create mode 100644 srcpkgs/libcxx/files/libcxx-0001-musl-hacks.patch diff --git a/srcpkgs/libcxx/files/libcxx-0001-musl-hacks.patch b/srcpkgs/libcxx/files/libcxx-0001-musl-hacks.patch new file mode 100644 index 00000000000..d94cfb0f61b --- /dev/null +++ b/srcpkgs/libcxx/files/libcxx-0001-musl-hacks.patch @@ -0,0 +1,107 @@ +From b9c1e25e5e60ffd6417a498824349815694a6c45 Mon Sep 17 00:00:00 2001 +From: Travis Tilley +Date: Sat, 9 May 2015 04:21:27 -0400 +Subject: [PATCH] musl fixes/hacks + +--- + include/__config | 4 ---- + include/locale | 7 +++---- + src/locale.cpp | 16 ++-------------- + 3 files changed, 5 insertions(+), 22 deletions(-) + +diff --git a/include/__config b/include/__config +index 97c66c8..a65e991 100644 +--- a/include/__config ++++ b/include/__config +@@ -348,14 +348,10 @@ typedef __char32_t char32_t; + #define _LIBCPP_HAS_QUICK_EXIT + #elif defined(__linux__) + #include +-#if __GLIBC_PREREQ(2, 15) + #define _LIBCPP_HAS_QUICK_EXIT +-#endif +-#if __GLIBC_PREREQ(2, 17) + #define _LIBCPP_HAS_C11_FEATURES + #endif + #endif +-#endif + + #if (__has_feature(cxx_noexcept)) + # define _NOEXCEPT noexcept +diff --git a/include/locale b/include/locale +index ca468d5..f3016bb 100644 +--- a/include/locale ++++ b/include/locale +@@ -10,7 +10,6 @@ + + #ifndef _LIBCPP_LOCALE + #define _LIBCPP_LOCALE +- + /* + locale synopsis + +@@ -871,7 +870,7 @@ __num_get_signed_integral(const char* __a, const char* __a_end, + typename remove_reference::type __save_errno = errno; + errno = 0; + char *__p2; +- long long __ll = strtoll_l(__a, &__p2, __base, _LIBCPP_GET_C_LOCALE); ++ long long __ll = strtoll(__a, &__p2, __base); + typename remove_reference::type __current_errno = errno; + if (__current_errno == 0) + errno = __save_errno; +@@ -911,7 +910,7 @@ __num_get_unsigned_integral(const char* __a, const char* __a_end, + typename remove_reference::type __save_errno = errno; + errno = 0; + char *__p2; +- unsigned long long __ll = strtoull_l(__a, &__p2, __base, _LIBCPP_GET_C_LOCALE); ++ unsigned long long __ll = strtoull(__a, &__p2, __base); + typename remove_reference::type __current_errno = errno; + if (__current_errno == 0) + errno = __save_errno; +@@ -941,7 +940,7 @@ __num_get_float(const char* __a, const char* __a_end, ios_base::iostate& __err) + typename remove_reference::type __save_errno = errno; + errno = 0; + char *__p2; +- long double __ld = strtold_l(__a, &__p2, _LIBCPP_GET_C_LOCALE); ++ long double __ld = strtold(__a, &__p2); + typename remove_reference::type __current_errno = errno; + if (__current_errno == 0) + errno = __save_errno; +diff --git a/src/locale.cpp b/src/locale.cpp +index 2842bfc..4301b5f 100644 +--- a/src/locale.cpp ++++ b/src/locale.cpp +@@ -1010,7 +1010,7 @@ ctype::do_narrow(const char_type* low, const char_type* high, char dfault, + return low; + } + +-#ifdef __EMSCRIPTEN__ ++#ifdef __linux__ + extern "C" const unsigned short ** __ctype_b_loc(); + extern "C" const int ** __ctype_tolower_loc(); + extern "C" const int ** __ctype_toupper_loc(); +@@ -1112,20 +1112,8 @@ ctype::classic_table() _NOEXCEPT + return _ctype+1; // internal ctype mask table defined in msvcrt.dll + // This is assumed to be safe, which is a nonsense assumption because we're + // going to end up dereferencing it later... +-#elif defined(__EMSCRIPTEN__) +- return *__ctype_b_loc(); +-#elif defined(_NEWLIB_VERSION) +- // Newlib has a 257-entry table in ctype_.c, where (char)0 starts at [1]. +- return _ctype_ + 1; +-#elif defined(_AIX) +- return (const unsigned int *)__lc_ctype_ptr->obj->mask; + #else +- // Platform not supported: abort so the person doing the port knows what to +- // fix +-# warning ctype::classic_table() is not implemented +- printf("ctype::classic_table() is not implemented\n"); +- abort(); +- return NULL; ++ return (const unsigned long *)*__ctype_b_loc(); + #endif + } + #endif +-- +2.1.4 + diff --git a/srcpkgs/libcxx/template b/srcpkgs/libcxx/template index c650da97799..5ffbfa79a27 100644 --- a/srcpkgs/libcxx/template +++ b/srcpkgs/libcxx/template @@ -1,17 +1,26 @@ # Template file for 'libcxx' pkgname=libcxx -version=3.6.2 +version=3.8.0 revision=1 build_style=cmake hostmakedepends="cmake" +makedepends="llvm-libunwind-devel" +LDFLAGS="-Wl,--no-as-needed -lunwind -Wl,--as-needed" +make_build_args="VERBOSE=1" short_desc="New implementation of the C++ standard library, targeting C++11" maintainer="Juan RP " homepage="http://libcxx.llvm.org" license="BSD" distfiles="http://www.llvm.org/releases/${version}/${pkgname}-${version}.src.tar.xz" -checksum=52f3d452f48209c9df1792158fdbd7f3e98ed9bca8ebb51fcd524f67437c8b81 +checksum=36804511b940bc8a7cefc7cb391a6b28f5e3f53f6372965642020db91174237b wrksrc=${pkgname}-${version}.src +post_extract() { + case "$XBPS_TARGET_MACHINE" in + *-musl) patch -Np1 <${FILESDIR}/libcxx-0001-musl-hacks.patch + esac +} + libcxx-devel_package() { short_desc+=" - development files" depends="${sourcepkg}>=${version}_${revision}"