summaryrefslogtreecommitdiff
path: root/repo/devel/libunwind
diff options
context:
space:
mode:
Diffstat (limited to 'repo/devel/libunwind')
-rw-r--r--repo/devel/libunwind/libcxx-musl.patch28
-rw-r--r--repo/devel/libunwind/libunwind-link-libssp.patch20
-rw-r--r--repo/devel/libunwind/libunwind.xibuild48
-rw-r--r--repo/devel/libunwind/toolchain-libunwind.xibuild0
4 files changed, 96 insertions, 0 deletions
diff --git a/repo/devel/libunwind/libcxx-musl.patch b/repo/devel/libunwind/libcxx-musl.patch
new file mode 100644
index 0000000..358d4a3
--- /dev/null
+++ b/repo/devel/libunwind/libcxx-musl.patch
@@ -0,0 +1,28 @@
+Patch-Source: https://github.com/void-linux/void-packages/blob/74f16232621ca8dfb6d244beff1df35a6df1647f/srcpkgs/llvm12/patches/libcxx-musl.patch
+
+--- a/libcxx/include/locale
++++ b/libcxx/include/locale
+@@ -742,7 +742,11 @@ __num_get_signed_integral(const char* __a, const char* __a_end,
+ typename remove_reference<decltype(errno)>::type __save_errno = errno;
+ errno = 0;
+ char *__p2;
++#if defined(__linux__) && !defined(__GLIBC__)
++ long long __ll = strtoll(__a, &__p2, __base);
++#else
+ long long __ll = strtoll_l(__a, &__p2, __base, _LIBCPP_GET_C_LOCALE);
++#endif
+ typename remove_reference<decltype(errno)>::type __current_errno = errno;
+ if (__current_errno == 0)
+ errno = __save_errno;
+@@ -782,7 +786,11 @@ __num_get_unsigned_integral(const char* __a, const char* __a_end,
+ typename remove_reference<decltype(errno)>::type __save_errno = errno;
+ errno = 0;
+ char *__p2;
++#if defined(__linux__) && !defined(__GLIBC__)
++ unsigned long long __ll = strtoull(__a, &__p2, __base);
++#else
+ unsigned long long __ll = strtoull_l(__a, &__p2, __base, _LIBCPP_GET_C_LOCALE);
++#endif
+ typename remove_reference<decltype(errno)>::type __current_errno = errno;
+ if (__current_errno == 0)
+ errno = __save_errno;
diff --git a/repo/devel/libunwind/libunwind-link-libssp.patch b/repo/devel/libunwind/libunwind-link-libssp.patch
new file mode 100644
index 0000000..ae819fe
--- /dev/null
+++ b/repo/devel/libunwind/libunwind-link-libssp.patch
@@ -0,0 +1,20 @@
+--- a/libunwind/src/CMakeLists.txt
++++ b/libunwind/src/CMakeLists.txt
+@@ -129,7 +129,7 @@
+ else()
+ target_compile_options(unwind_shared PRIVATE -fno-rtti)
+ endif()
+- target_link_libraries(unwind_shared PRIVATE ${LIBUNWIND_LIBRARIES})
++ target_link_libraries(unwind_shared PRIVATE ${LIBUNWIND_LIBRARIES} -lssp_nonshared)
+ set_target_properties(unwind_shared
+ PROPERTIES
+ CXX_EXTENSIONS OFF
+@@ -157,7 +157,7 @@
+ else()
+ target_compile_options(unwind_static PRIVATE -fno-rtti)
+ endif()
+- target_link_libraries(unwind_static PRIVATE ${LIBUNWIND_LIBRARIES})
++ target_link_libraries(unwind_static PRIVATE ${LIBUNWIND_LIBRARIES} -lssp_nonshared)
+ set_target_properties(unwind_static
+ PROPERTIES
+ CXX_EXTENSIONS OFF
diff --git a/repo/devel/libunwind/libunwind.xibuild b/repo/devel/libunwind/libunwind.xibuild
new file mode 100644
index 0000000..067a91d
--- /dev/null
+++ b/repo/devel/libunwind/libunwind.xibuild
@@ -0,0 +1,48 @@
+#!/bin/sh
+
+NAME="libunwind"
+DESC="LLVM version of libunwind library"
+
+MAKEDEPS="cmake "
+DEPS="musl "
+
+PKG_VER=13.0.0
+SOURCE="https://github.com/llvm/llvm-project/releases/download/llvmorg-$PKG_VER/libunwind-$PKG_VER.src.tar.xz"
+
+ADDITIONAL="
+ https://github.com/llvm/llvm-project/releases/download/llvmorg-$PKG_VER/llvm-$PKG_VER.src.tar.xz
+ https://github.com/llvm/llvm-project/releases/download/llvmorg-$PKG_VER/libcxx-$PKG_VER.src.tar.xz
+ libunwind-link-libssp.patch
+ libcxx-musl.patch
+"
+
+prepare () {
+ tar xvf libunwind-$PKG_VER.src.tar.xz
+ tar xvf llvm-$PKG_VER.src.tar.xz
+ tar xvf libcxx-$PKG_VER.src.tar.xz
+ mv libunwind-$PKG_VER.src libunwind
+ mv llvm-$PKG_VER.src llvm
+ mv libcxx-$PKG_VER.src libcxx
+
+ apply_patches
+}
+
+build () {
+ cmake -B build -G Ninja -S libunwind \
+ -DCMAKE_BUILD_TYPE=MinSizeRel \
+ -DCMAKE_C_FLAGS_MINSIZEREL_INIT="$CFLAGS" \
+ -DCMAKE_CXX_FLAGS_MINSIZEREL_INIT="$CXXFLAGS" \
+ -DCMAKE_EXE_LINKER_FLAGS_MINSIZEREL_INIT="$LDFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DLIBUNWIND_HAS_NODEFAULTLIBS_FLAG=OFF \
+ -DLIBUNWIND_STANDALONE_BUILD=ON
+ cmake --build build
+}
+
+package () {
+ DESTDIR="$PKG_DEST" cmake --install build
+ mkdir -p "$PKG_DEST"/usr/include/mach-o
+ cp libunwind/include/*.h "$PKG_DEST"/usr/include/
+ cp libunwind/include/mach-o/*.h "$PKG_DEST"/usr/include/mach-o/
+
+}
diff --git a/repo/devel/libunwind/toolchain-libunwind.xibuild b/repo/devel/libunwind/toolchain-libunwind.xibuild
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/repo/devel/libunwind/toolchain-libunwind.xibuild