diff options
Diffstat (limited to 'academic/cblas/cblas.SlackBuild')
-rw-r--r-- | academic/cblas/cblas.SlackBuild | 126 |
1 files changed, 77 insertions, 49 deletions
diff --git a/academic/cblas/cblas.SlackBuild b/academic/cblas/cblas.SlackBuild index ea1235e122..2aa85d604b 100644 --- a/academic/cblas/cblas.SlackBuild +++ b/academic/cblas/cblas.SlackBuild @@ -2,18 +2,37 @@ # Slackware build script for CBLAS -# Written by Eugene Suter <easuter@gmail.com> +# Copyright 2016 Kyle Guinn <elyk03@gmail.com>, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. PRGNAM=cblas -VERSION=${VERSION:-20110120} +SRCNAM=lapack +VERSION=${VERSION:-3.6.0} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} if [ -z "$ARCH" ]; then - case "$( uname -m )" in + case "$(uname -m)" in i?86) ARCH=i486 ;; arm*) ARCH=arm ;; - *) ARCH=$( uname -m ) ;; + *) ARCH=$(uname -m) ;; esac fi @@ -22,70 +41,79 @@ TMP=${TMP:-/tmp/SBo} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} +DOCS="LICENSE CBLAS/README" + 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" else SLKCFLAGS="-O2" - LIBDIRSUFFIX="" fi -set -e +set -e rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP -rm -rf CBLAS -tar xvf $CWD/$PRGNAM.tgz -cd CBLAS +rm -rf $SRCNAM-$VERSION +tar xvf $CWD/$SRCNAM-$VERSION.tgz +cd $SRCNAM-$VERSION chown -R root:root . -find -L . \ - \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \ - -exec chmod 755 {} \; -o \ - \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ - -exec chmod 644 {} \; - -# Manually configure and build -cp Makefile.LINUX Makefile.in -make CBDIR=$(pwd) \ - CBLIBDIR=$(pwd)/lib \ - CBLIB=$(pwd)/lib/libcblas.a \ - BLLIB="/usr/lib${LIBDIRSUFFIX}/libblas.a" \ - CFLAGS="$SLKCFLAGS -DADD_" \ - FFLAGS="$SLKCFLAGS -DADD_" \ - FC="gfortran" \ - RANLIB=ranlib \ - alllib - -cd lib -ar -x lib$PRGNAM.a -gcc -fPIC -lgfortran -shared *.o -Wl,-soname,$PRGNAM.so.$VERSION \ - -o lib$PRGNAM.so.$VERSION - -mkdir -p $PKG/usr/lib${LIBDIRSUFFIX} -cp lib$PRGNAM.a $PKG/usr/lib${LIBDIRSUFFIX} -cp lib$PRGNAM.so.$VERSION $PKG/usr/lib${LIBDIRSUFFIX} -( cd $PKG/usr/lib${LIBDIRSUFFIX} - ln -s lib$PRGNAM.so.$VERSION lib$PRGNAM.so -) +chmod -R u+w,go-w,a+rX-st . + +# Fix lots of bugs with the cmake build system and .pc files. +# More importantly, allow building only the CBLAS component. +patch -p1 < $CWD/patches/generate-pkgconfig.diff +patch -p1 < $CWD/patches/link-dependencies.diff +patch -p1 < $CWD/patches/target-cleanup.diff +patch -p1 < $CWD/patches/cmake-piecewise.diff + +# Avoid adding an RPATH entry to the shared lib. It's unnecessary (except for +# running the test suite), and it's broken on 64-bit (needs LIBDIRSUFFIX). +mkdir -p shared +cd shared + cmake \ + -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_Fortran_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_BUILD_TYPE=None \ + -DCMAKE_RULE_MESSAGES=OFF \ + -DCMAKE_VERBOSE_MAKEFILE=TRUE \ + -DUSE_OPTIMIZED_BLAS=ON \ + -DBUILD_CBLAS=ON \ + -DBUILD_TESTING=OFF \ + -DBUILD_SHARED_LIBS=ON \ + -DCMAKE_SKIP_RPATH=YES \ + .. + make + make install/strip DESTDIR=$PKG cd .. -mkdir -p $PKG/usr/include -cp include/* $PKG/usr/include - -find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ - | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true +# cmake doesn't appear to let us build both shared and static libs +# at the same time, so build it twice. This may build a non-PIC library +# on some architectures, which should be faster. +mkdir -p static +cd static + cmake \ + -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_Fortran_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_BUILD_TYPE=None \ + -DCMAKE_RULE_MESSAGES=OFF \ + -DCMAKE_VERBOSE_MAKEFILE=TRUE \ + -DUSE_OPTIMIZED_BLAS=ON \ + -DBUILD_CBLAS=ON \ + -DBUILD_TESTING=OFF \ + .. + make + make install/strip DESTDIR=$PKG +cd .. mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION -cp -a \ - README examples \ - $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 |