summaryrefslogtreecommitdiff
path: root/libraries/fftw
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/fftw')
-rw-r--r--libraries/fftw/README11
-rw-r--r--libraries/fftw/fftw.SlackBuild162
-rw-r--r--libraries/fftw/fftw.info4
3 files changed, 96 insertions, 81 deletions
diff --git a/libraries/fftw/README b/libraries/fftw/README
index c357014303..10b6bff214 100644
--- a/libraries/fftw/README
+++ b/libraries/fftw/README
@@ -4,5 +4,12 @@ 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.
+By default non-portable binaries will be created. If you need to create
+a package that is shared among various machines, pass PORTABLE=yes to the
+script.
+
+To enable SSE or SSE2 SIMD optimizations pass SSE=yes or SSE2=yes respectively
+to the script. Enabling these will still create a portable package as fftw falls
+back to the standard code, if the optimized one isn't supported on the cpu.
+However, to be able to build them your cpu has to actually support those
+extensions.
diff --git a/libraries/fftw/fftw.SlackBuild b/libraries/fftw/fftw.SlackBuild
index 9cdd74f184..e079c263e1 100644
--- a/libraries/fftw/fftw.SlackBuild
+++ b/libraries/fftw/fftw.SlackBuild
@@ -3,35 +3,60 @@
# Slackware build script for fftw
# Written by Kyle Guinn <elyk03@gmail.com>
-PRGNAM="fftw"
-VERSION=${VERSION:-"3.2.1"}
-ARCH=${ARCH:-"i486"}
-BUILD=${BUILD:-"1"}
-TAG=${TAG:-"_SBo"}
+PRGNAM=fftw
+VERSION=${VERSION:-3.2.1}
+ARCH=${ARCH:-i486}
+BUILD=${BUILD:-2}
+TAG=${TAG:-_SBo}
CWD=$(pwd)
-TMP=${TMP:-"/tmp/SBo"}
-PKG="$TMP/package-$PRGNAM-$VERSION"
-OUTPUT=${OUTPUT:-"/tmp"}
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM-$VERSION
+OUTPUT=${OUTPUT:-/tmp}
DOCS="AUTHORS CONVENTIONS COPY* ChangeLog INSTALL NEWS README* TODO doc/html"
-# According to doc/fftw3.pdf the configure script should choose the best
-# value for $CFLAGS. These variables must be unset so that the configure
-# script will decide.
-unset CFLAGS
-unset CXXFLAGS
-unset FFLAGS
-PKGARCH="custom"
-
if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
fi
+if [ "${PORTABLE:-no}" = "no" ]; then
+ # According to doc/fftw3.pdf the configure script should choose the best
+ # value for $CFLAGS. These variables must be unset so that the configure
+ # script will decide.
+
+ # If you are interested in further optimizations such as alternative
+ # multithreading and support for other processors, check this page for
+ # details:
+ # http://www.fftw.org/fftw3_doc/Installation-on-Unix.html
+ unset CFLAGS
+ unset CXXFLAGS
+ unset FFLAGS
+ PKGARCH="custom"
+ do_portable=""
+else
+ PKGARCH=$ARCH
+ do_portable="--enable-portable-binary"
+fi
+
+if [ "${SSE:-no}" = "no" ]; then
+ do_sse=""
+else
+ do_sse="--enable-sse"
+fi
+
+if [ "${SSE2:-no}" = "no" ]; then
+ do_sse2=""
+else
+ do_sse2="--enable-sse2"
+fi
set -e
@@ -44,83 +69,64 @@ cd $PRGNAM-$VERSION
chown -R root:root .
chmod -R u+w,go+r-w,a-st .
-# By default this script leaves 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. See the link below.
-#
-# --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
-#
-# Compiling with the default options creates a double-precision library
-# named libfftw3. --enable-float or --enable-single builds a single
-# precision library (libfftw3f), and --enable-long-double builds a
-# long-double precision library (libfftw3l). This script builds all three
-# libraries since they can coexist on the same machine.
-#
-# You may be able to --enable one of the SIMD options when compiling for
-# one precision, but not for another. Check this page for details:
-# http://www.fftw.org/fftw3_doc/Installation-on-Unix.html
-
# compile libfftw3
./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --mandir=/usr/man \
- --infodir=/usr/info \
- --docdir=/usr/doc/fftw-$VERSION \
- --enable-shared \
- --disable-static \
- --enable-threads
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --docdir=/usr/doc/fftw-$VERSION \
+ --enable-shared \
+ --disable-static \
+ --enable-threads \
+ $do_sse2 \
+ $do_portable
make
make install-strip DESTDIR=$PKG
# compile libfftw3f
./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --mandir=/usr/man \
- --infodir=/usr/info \
- --docdir=/usr/doc/fftw-$VERSION \
- --enable-shared \
- --disable-static \
- --enable-threads \
- --enable-float
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --docdir=/usr/doc/fftw-$VERSION \
+ --enable-shared \
+ --disable-static \
+ --enable-threads \
+ --enable-float \
+ $do_sse \
+ $do_portable
make
make install-strip DESTDIR=$PKG
# compile libfftw3l
./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --mandir=/usr/man \
- --infodir=/usr/info \
- --docdir=/usr/doc/fftw-$VERSION \
- --enable-shared \
- --disable-static \
- --enable-threads \
- --enable-long-double
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --docdir=/usr/doc/fftw-$VERSION \
+ --enable-shared \
+ --disable-static \
+ --enable-threads \
+ --enable-long-double \
+ $do_portable
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
+ 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
@@ -134,4 +140,4 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$PKGARCH-$BUILD$TAG.tgz
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$PKGARCH-$BUILD$TAG.${PKGTYPE:-tgz}
diff --git a/libraries/fftw/fftw.info b/libraries/fftw/fftw.info
index 43c98ee36c..d342e1cb02 100644
--- a/libraries/fftw/fftw.info
+++ b/libraries/fftw/fftw.info
@@ -2,7 +2,9 @@ PRGNAM="fftw"
VERSION="3.2.1"
HOMEPAGE="http://www.fftw.org/"
DOWNLOAD="ftp://ftp.fftw.org/pub/fftw/fftw-3.2.1.tar.gz"
+DOWNLOAD_x86_64=""
MD5SUM="712d3f33625a0a76f5758648d4b925f7"
+MD5SUM_x86_64=""
MAINTAINER="Kyle Guinn"
EMAIL="elyk03@gmail.com"
-APPROVED="rworkman"
+APPROVED="dsomero"