#!/bin/bash
TMPdir=`mktemp -dt`
OLDdir=$PWD
SCILABdir="${1:-$PWD}/lib/thirdparty/"
cd $TMPdir
wget http://www.netlib.org/lapack/lapack.tgz
wget -O- http://sourceforge.net/projects/math-atlas/files/Developer%20%28unstable%29/3.9.32/atlas3.9.32.tar.bz2 |tar xvj
cd ATLAS
mkdir build
cd build
# todo check/set freq governor to performance
#export NCPU=`fgrep -c processor < /proc/cpuinfo`
#cpufreq-selector -g performance
export PTR_WIDTH=32
if [ $(uname -m) == "x86_64" ]; then
export PTR_WIDTH=64;
fi
# TODO :
# -Si antthr 2 if arch does not support cpu affinity
# -Si omp 2 -Fa alg -fopenmp if OpenMP needed for user mt code interactions
../configure -b $PTR_WIDTH --libdir=${SCILABdir} --shared --with-netlib-lapack-tarfile=../../lapack.tgz -Si latune 1
patch --ignore-whitespace -Np1 <<EOF
--- build/lib/Makefile 2010-11-04 09:40:16.000000000 +0100
+++ with-blas-build/lib/Makefile 2010-11-04 09:46:52.000000000 +0100
@@ -10,10 +10,10 @@
#
# override with libatlas.so only when atlas is built to one lib
#
-DYNlibs = liblapack.so libf77blas.so libcblas.so libatlas.so
-PTDYNlibs = liblapack.so libptf77blas.so libptcblas.so libatlas.so
-CDYNlibs = liblapack.so libcblas.so libatlas.so
-CPTDYNlibs = liblapack.so libptcblas.so libatlas.so
+DYNlibs = liblapack.so libf77blas.so libcblas.so libatlas.so libblas.so
+PTDYNlibs = liblapack.so libptf77blas.so libptcblas.so libatlas.so libblas.so
+CDYNlibs = liblapack.so libcblas.so libatlas.so libblas.so
+CPTDYNlibs = liblapack.so libptcblas.so libatlas.so libblas.so
VER=3.9.32
tmpd = RCW_tMp
@@ -45,10 +45,10 @@
ptshared :
- rm -f libatlas.so liblapack.so
\$(MAKE) libatlas.so libptf77blas.so libf77blas.so \\
- libptcblas.so libcblas.so liblapack.so
+ libptcblas.so libcblas.so liblapack.so libblas.so
shared :
- rm -f libatlas.so liblapack.so
- \$(MAKE) libatlas.so libf77blas.so libcblas.so liblapack.so
+ \$(MAKE) libatlas.so libf77blas.so libcblas.so liblapack.so libblas.so
cptshared :
- rm -f libatlas.so libclapack.so
\$(MAKE) libatlas.so libclapack.so libptcblas.so libcblas.so
@@ -84,7 +84,10 @@
ld \$(LDFLAGS) -shared -soname \$(LIBINSTdir)/libcblas.so \\
-o libcblas.so -rpath-link \$(LIBINSTdir) \\
--whole-archive libcblas.a --no-whole-archive -lc \$(LIBS)
-
+libblas.so : libblas.a
+ ld \$(LDFLAGS) -shared -soname \$(LIBINSTdir)/libblas.so \\
+ -o libblas.so -rpath-link \$(LIBINSTdir) \\
+ --whole-archive libblas.a --no-whole-archive -lc \$(LIBS)
#
# Builds one shared lib from all ATLAS files
#
@@ -116,6 +119,15 @@
ar r libclapack.a clapack/ATL_* clapack/clapack_*
rm -rf clapack
+libblas.a : libatlas.a libptf77blas.a libptcblas.a
+ rm -rf blas
+ mkdir blas
+ (cd blas ; ar x ../libatlas.a);
+ (cd blas ; ar x ../libptf77blas.a);
+ (cd blas ; ar x ../libptcblas.a);
+ ar r libblas.a blas/*.o
+ rm -rf blas
+
# ============================================
# The following commands build DLLs on Windows
# ============================================
EOF
make
cd lib
make ptshared
cp libptf77blas.so $SCILABdir/libf77blas.so.3gf.0
cp libptcblas.so $SCILABdir/libcblas.so.3gf.0
cp libblas.so $SCILABdir/libblas.so.3gf.0
cp libatlas.so $SCILABdir/libatlas.so.3gf.0
cp liblapack.so $SCILABdir/liblapack.so.3gf.0
cd $OLDdir