summaryrefslogtreecommitdiff
path: root/user/gc
diff options
context:
space:
mode:
Diffstat (limited to 'user/gc')
-rw-r--r--user/gc/APKBUILD52
-rw-r--r--user/gc/fix-boehm-gc.patch10
2 files changed, 62 insertions, 0 deletions
diff --git a/user/gc/APKBUILD b/user/gc/APKBUILD
new file mode 100644
index 000000000..08c89d29a
--- /dev/null
+++ b/user/gc/APKBUILD
@@ -0,0 +1,52 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=gc
+pkgver=7.6.6
+pkgrel=0
+pkgdesc="A garbage collector for C and C++"
+url="http://hboehm.info/gc/"
+arch="all"
+license="MIT"
+makedepends="libatomic_ops-dev linux-headers"
+subpackages="$pkgname-dev $pkgname-doc libgc++:libgccpp"
+source="https://github.com/ivmai/bdwgc/releases/download/v$pkgver/$pkgname-$pkgver.tar.gz
+ fix-boehm-gc.patch
+ "
+builddir="$srcdir/gc-${pkgver%[a-z]}"
+
+build() {
+ cd "$builddir"
+
+ if [ "$CLIBC" = "musl" ]; then
+ export CFLAGS="$CFLAGS -D_GNU_SOURCE -DNO_GETCONTEXT -DUSE_MMAP -DHAVE_DL_ITERATE_PHDR"
+ fi
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --datadir=/usr/share/doc/gc \
+ --enable-cplusplus
+ make
+}
+
+check() {
+ cd "$builddir"
+
+ if [ "$CARCH" = "ppc" ]; then
+ make check || true
+ else
+ make check
+ fi
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+libgccpp() {
+ install -d "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libgccpp.* "$subpkgdir"/usr/lib/
+}
+
+sha512sums="85be341132fa460fcad7ca323cf1c594f37e19430269d639ca796b9e3502b0d496822cdccb2b7ca77859f3d19a43165b963142b60fce6b1271ed9a3cccb6620b gc-7.6.6.tar.gz
+6439505931f0d023bf27d6ce0af90d09dc23bb9dd49b561566ec54b2cddc20642be9bd7b41203f643cb6efed3db2f54aef410b436f3acc2351fe4bb0a8791ea4 fix-boehm-gc.patch"
diff --git a/user/gc/fix-boehm-gc.patch b/user/gc/fix-boehm-gc.patch
new file mode 100644
index 000000000..6ac3870b0
--- /dev/null
+++ b/user/gc/fix-boehm-gc.patch
@@ -0,0 +1,10 @@
+--- gc-7.6.0.orig/pthread_stop_world.c
++++ gc-7.6.0/pthread_stop_world.c
+@@ -45,6 +45,7 @@
+ #include <semaphore.h>
+ #include <errno.h>
+ #include <unistd.h>
++#include <sys/select.h>
+ #include "atomic_ops.h"
+
+ /* It's safe to call original pthread_sigmask() here. */