From ab751b737414863f82ff571fa9a872f147a3f002 Mon Sep 17 00:00:00 2001
From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
Date: Fri, 13 Jul 2018 03:12:34 -0500
Subject: [PATCH] user/fftw: pull in

---
 user/fftw/APKBUILD      | 98 +++++++++++++++++++++++++++++++++++++++++
 user/fftw/cycle.h.patch | 29 ++++++++++++
 2 files changed, 127 insertions(+)
 create mode 100644 user/fftw/APKBUILD
 create mode 100644 user/fftw/cycle.h.patch

diff --git a/user/fftw/APKBUILD b/user/fftw/APKBUILD
new file mode 100644
index 0000000000..881ed5d644
--- /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 0000000000..ff70cdb4d9
--- /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
-- 
GitLab