summaryrefslogtreecommitdiff
path: root/libraries/fftw
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/fftw')
-rw-r--r--libraries/fftw/README8
-rw-r--r--libraries/fftw/fftw.SlackBuild128
-rw-r--r--libraries/fftw/fftw.info8
-rw-r--r--libraries/fftw/slack-desc19
4 files changed, 163 insertions, 0 deletions
diff --git a/libraries/fftw/README b/libraries/fftw/README
new file mode 100644
index 0000000000..c357014303
--- /dev/null
+++ b/libraries/fftw/README
@@ -0,0 +1,8 @@
+FFTW is a free collection of fast C routines for computing the Discrete
+Fourier Transform in one or more dimensions. It includes complex, real,
+symmetric, and parallel transforms, and can handle arbitrary array sizes
+efficiently. FFTW is typically faster than other publically-available FFT
+implementations, and is even competitive with vendor-tuned libraries.
+
+There are several machine-dependent optimizations that can be enabled in order
+to generate SIMD code; take a look in fftw.SlackBuild to enable them.
diff --git a/libraries/fftw/fftw.SlackBuild b/libraries/fftw/fftw.SlackBuild
new file mode 100644
index 0000000000..7f207e2125
--- /dev/null
+++ b/libraries/fftw/fftw.SlackBuild
@@ -0,0 +1,128 @@
+#!/bin/sh
+
+# Slackware build script for fftw
+# Written by Kyle Guinn <elyk03@gmail.com>
+
+PRGNAM=fftw
+VERSION=3.1.2
+ARCH=${ARCH:-i486}
+BUILD=${BUILD:-2}
+TAG=${TAG:-_SBo}
+CWD=$(pwd)
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar -xzvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+chmod -R u+w,go+r-w,a-s .
+
+# According to doc/fftw3.pdf, the configure script should choose the best value
+# for $CFLAGS. We will assume that the script knows what it is doing.
+#
+# By default we will leave out these machine-dependent optimizations. If your
+# machine supports these, feel free to add them to the configure options.
+# Note that fftw may refuse to compile by doing so -- watch for error messages
+# about the precision not matching.
+# --enable-fma enable optimizations for machines with fused multiply-add
+# --enable-k7 enable AMD K7 optimizations, including 3dNow!
+# --enable-sse enable SSE optimizations (Pentium III+)
+# --enable-sse2 enable SSE2 optimizations (Pentium IV+)
+# --enable-altivec enable Altivec optimizations (PowerPC G4+)
+# --enable-portable-binary
+# disable compiler optimizations that would produce
+# unportable binaries
+#
+# You can also build fftw using a different precision. --enable-float may be
+# required depending on any SIMD code enabled with the above options.
+# --enable-single compile fftw in single precision
+# --enable-float synonym for --enable-single
+# --enable-long-double compile fftw in long-double precision
+#
+# Heinz Wiesinger points out that these extra precisions can be compiled
+# as well. --enable-float will append an 'f' to the library names, while
+# --enable-long-double will append an 'l'. We have to compile three separate
+# times instead of once to create all of the files.
+#
+# Note that the ./configure; make; make install commands below are not inside
+# a loop. You may be able to --enable one of the SIMD options for one
+# precision, but not another. (This should be documented somewhere...)
+
+# compile fftw3
+CFLAGS= \
+CXXFLAGS= \
+FFLAGS= \
+./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --docdir=/usr/doc/fftw-$VERSION \
+ --enable-shared \
+ --disable-static \
+ --enable-threads
+make
+make install-strip DESTDIR=$PKG
+
+# compile fftw3f
+CFLAGS= \
+CXXFLAGS= \
+FFLAGS= \
+./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --docdir=/usr/doc/fftw-$VERSION \
+ --enable-shared \
+ --disable-static \
+ --enable-threads \
+ --enable-float
+make
+make install-strip DESTDIR=$PKG
+
+# compile fftw3l
+CFLAGS= \
+CXXFLAGS= \
+FFLAGS= \
+./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --docdir=/usr/doc/fftw-$VERSION \
+ --enable-shared \
+ --disable-static \
+ --enable-threads \
+ --enable-long-double
+make
+make install-strip DESTDIR=$PKG
+
+( cd $PKG/usr/man
+ find . -type f -exec gzip -9 {} \;
+ for i in $(find . -type l) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+)
+
+rm -f $PKG/usr/info/dir
+gzip -9 $PKG/usr/info/*.info*
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a AUTHORS CONVENTIONS COPYING COPYRIGHT ChangeLog INSTALL \
+ NEWS README TODO doc/html $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.tgz
diff --git a/libraries/fftw/fftw.info b/libraries/fftw/fftw.info
new file mode 100644
index 0000000000..3abb4a598f
--- /dev/null
+++ b/libraries/fftw/fftw.info
@@ -0,0 +1,8 @@
+PRGNAM="fftw"
+VERSION="3.1.2"
+HOMEPAGE="http://www.fftw.org/"
+DOWNLOAD="http://www.fftw.org/fftw-3.1.2.tar.gz"
+MD5SUM="08f2e21c9fd02f4be2bd53a62592afa4"
+MAINTAINER="Kyle Guinn"
+EMAIL="elyk03@gmail.com"
+APPROVED="rworkman"
diff --git a/libraries/fftw/slack-desc b/libraries/fftw/slack-desc
new file mode 100644
index 0000000000..7b6430065b
--- /dev/null
+++ b/libraries/fftw/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+fftw: fftw (Fastest Fourier Transform in the West)
+fftw:
+fftw: FFTW is a free collection of fast C routines for computing the
+fftw: Discrete Fourier Transform in one or more dimensions. It includes
+fftw: complex, real, symmetric, and parallel transforms, and can handle
+fftw: arbitrary array sizes efficiently. FFTW is typically faster than
+fftw: other publically-available FFT implementations, and is even
+fftw: competitive with vendor-tuned libraries.
+fftw:
+fftw:
+fftw: