diff options
-rw-r--r-- | user/fftw/APKBUILD | 98 | ||||
-rw-r--r-- | user/fftw/cycle.h.patch | 29 |
2 files changed, 127 insertions, 0 deletions
diff --git a/user/fftw/APKBUILD b/user/fftw/APKBUILD new file mode 100644 index 000000000..881ed5d64 --- /dev/null +++ b/user/fftw/APKBUILD @@ -0,0 +1,98 @@ +# Contributor: William Pitcock <nenolod@dereferenced.org> +# Maintainer: William Pitcock <nenolod@dereferenced.org> +pkgname=fftw +pkgver=3.3.6p2 +pkgrel=2 +pkgdesc="fastest fourier transform in the west" +url="http://www.fftw.org/" +# s390x: hangs on container and KVM +arch="all !s390x" +license="GPL-2.0+" +makedepends="texinfo" +# order of the libs split functions are important because of lib naming +subpackages="$pkgname-dev $pkgname-doc $pkgname-single-libs:single + $pkgname-long-double-libs:long_double $pkgname-double-libs:double" +srcpkgver=${pkgver//p/-pl} +source="http://www.fftw.org/$pkgname-$srcpkgver.tar.gz + cycle.h.patch" +builddir="$srcdir/$pkgname-$srcpkgver" + +_precision="single double long-double" + +prepare() { + default_prepare + + cd "$builddir" + local i; for i in $_precision; do + cp -r "$builddir" $srcdir/$i + done +} + +build() { + local _openmp= + + local i; for i in $_precision; do + case "$i" in + single) _cf="--enable-single";; + double) _cf="";; + long-double) _cf="--enable-long-double";; + esac + + case "$i--$CARCH" in + single--x86_64 | double--x86_64) + _cf="$_cf --enable-sse2 --enable-avx";; + single--arm* | single--aarch64) + _cf="$_cf --enable-neon";; + esac + + msg "Building for $i precision ($_cf)" + cd "$srcdir"/$i + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --enable-shared \ + --enable-threads \ + $_openmp \ + $_cf + make + done +} + +check() { + local i; for i in $_precision; do + cd "$srcdir"/$i + make check + done +} + +package() { + local i; for i in $_precision; do + cd "$srcdir"/$i + make DESTDIR="$pkgdir" install + done +} + +single() { + mkdir -p "$subpkgdir"/usr/lib + mv "$pkgdir"/usr/lib/libfftw3f*.so* \ + "$subpkgdir"/usr/lib/ +} + +double() { + mkdir -p "$subpkgdir"/usr/lib + mv "$pkgdir"/usr/lib/libfftw3*.so* \ + "$subpkgdir"/usr/lib/ +} + +long_double() { + mkdir -p "$subpkgdir"/usr/lib + mv "$pkgdir"/usr/lib/libfftw3l*.so* \ + "$subpkgdir"/usr/lib/ +} + +sha512sums="e130309856752a1555b6d151c4d0ce9eb4b2c208fff7e3e89282ca8ef6104718f865cbb5e9c4af4367b3615b69b0d50fd001a26d74fd5324ff2faabe14fe3472 fftw-3.3.6-pl2.tar.gz +d71ffb0aa658f7b22239491698426f4a97e657abc953020745f7581d2937a062a279eaa5980cd7f7fe2e8425a032eafc3d4c0cffdc79a83a3aef382c988d739a cycle.h.patch" diff --git a/user/fftw/cycle.h.patch b/user/fftw/cycle.h.patch new file mode 100644 index 000000000..ff70cdb4d --- /dev/null +++ b/user/fftw/cycle.h.patch @@ -0,0 +1,29 @@ +--- ./kernel/cycle.h.orig ++++ ./kernel/cycle.h +@@ -437,26 +437,6 @@ + #define HAVE_TICK_COUNTER + #endif + /*----------------------------------------------------------------*/ +-/* SGI/Irix */ +-#if defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_SGI_CYCLE) && !defined(HAVE_TICK_COUNTER) +-typedef struct timespec ticks; +- +-static inline ticks getticks(void) +-{ +- struct timespec t; +- clock_gettime(CLOCK_SGI_CYCLE, &t); +- return t; +-} +- +-static inline double elapsed(ticks t1, ticks t0) +-{ +- return ((double)t1.tv_sec - (double)t0.tv_sec) * 1.0E9 + +- ((double)t1.tv_nsec - (double)t0.tv_nsec); +-} +-#define HAVE_TICK_COUNTER +-#endif +- +-/*----------------------------------------------------------------*/ + /* Cray UNICOS _rtc() intrinsic function */ + #if defined(HAVE__RTC) && !defined(HAVE_TICK_COUNTER) + #ifdef HAVE_INTRINSICS_H |