From 275b18da0271da235eaee7ade41877b1f0da76d4 Mon Sep 17 00:00:00 2001 From: Kyle Guinn Date: Thu, 13 May 2010 00:29:24 +0200 Subject: [PATCH] libraries/fftw: Updated for version 3.2.1 --- libraries/fftw/README | 11 ++- libraries/fftw/fftw.SlackBuild | 162 +++++++++++++++++---------------- libraries/fftw/fftw.info | 4 +- 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 -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"