#!/bin/sh # Slackware build script for fftw # Written by Kyle Guinn PRGNAM="fftw" VERSION=${VERSION:="3.2"} ARCH=${ARCH:-"custom"} BUILD=${BUILD:-"1"} TAG=${TAG:-"_SBo"} CWD=$(pwd) TMP=${TMP:-"/tmp/SBo"} PKG="$TMP/package-$PRGNAM-$VERSION" OUTPUT=${OUTPUT:-"/tmp"} DOCS="AUTHORS CONVENTIONS COPYING COPYRIGHT ChangeLog INSTALL NEWS README TODO doc/html" # 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. unset CFLAGS unset CXXFLAGS unset FFLAGS set -e rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP rm -rf $PRGNAM-$VERSION tar xvf $CWD/$PRGNAM-$VERSION.tar.gz cd $PRGNAM-$VERSION chown -R root:root . chmod -R u+w,go+r-w,a-st . # 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 ./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 ./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 ./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 $DOCS $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