# Maintainer: Luis Henrique <lmello.009@gmail.com>
# Former Maintainer: R S Ananda Murthy <rsamurti@gmail.com>

pkgname=suitesparse
pkgver=3.4.0
pkgrel=1lm
source=("http://www.cise.ufl.edu/research/sparse/SuiteSparse/SuiteSparse-3.4.0.tar.gz" 
"UFconfig.mk.diff")
docs=("readme" "install" "copying" "changelog" "authors" "news" "todo")
url=http://www.cise.ufl.edu/research/sparse/SuiteSparse/

slackdesc=\
(
#|-----handy-ruler------------------------------------------------------|
"SuiteSparse (A suite of sparse matrix packages)"
"Provides the following libraries for computations involving sparse"
"matrices -- AMD, CAMD, COLAMD, CCOLAMD, BTF, KLU, CHOLMOD, CXSparse"
"and UMFPACK."
)


build() {
    cd $startdir/src/SuiteSparse
    # Patch configuration
    patch -p0 < $startdir/src/UFconfig.mk.diff
    make || return 1
    mkdir shared
    
    # Make and link shared libs
    ld -shared -soname libamd.so.2 -o shared/libamd.so.2.2.0 --whole-archive AMD/Lib/libamd.a && ln -sf libamd.so.2.2.0 shared/libamd.so && ln -sf libamd.so.2.2.0 shared/libamd.so.2
    ld -shared -soname libcamd.so.2 -o shared/libcamd.so.2.2.0 --whole-archive CAMD/Lib/libcamd.a && ln -sf libcamd.so.2.2.0 shared/libcamd.so && ln -sf libcamd.so.2.2.0 shared/libcamd.so.2
    ld -shared -soname libcolamd.so.2 -o shared/libcolamd.so.2.7.1 --whole-archive COLAMD/Lib/libcolamd.a && ln -sf libcolamd.so.2.7.1 shared/libcolamd.so && ln -sf libcolamd.so.2.7.1 shared/libcolamd.so.2
    ld -shared -soname libccolamd.so.2 -o shared/libccolamd.so.2.7.1 --whole-archive CCOLAMD/Lib/libccolamd.a && ln -sf libccolamd.so.2.7.1 shared/libccolamd.so && ln -sf libccolamd.so.2.7.1 shared/libccolamd.so.2
    ld -shared -soname libbtf.so.1 -o shared/libbtf.so.1.1.0 --whole-archive BTF/Lib/libbtf.a && ln -sf libbtf.so.1.1.0 shared/libbtf.so && ln -sf libbtf.so.1.1.0 shared/libbtf.so.1
    ld -shared -soname libldl.so.2 -o shared/libldl.so.2.0.1 --whole-archive LDL/Lib/libldl.a && ln -sf libldl.so.2.0.1 shared/libldl.so ln -sf libldl.so.2.0.1 shared/libldl.so.2
    ld -shared -soname libcholmod.so.1 -o shared/libcholmod.so.1.7.1 --whole-archive CHOLMOD/Lib/libcholmod.a -lblas -llapack -lmetis -L./shared -lamd -lcamd -lcolamd -lccolamd && ln -sf libcholmod.so.1.7.1 shared/libcholmod.so && ln -sf libcholmod.so.1.7.1 shared/libcholmod.so.1
    ld -shared -soname libspqr.so.1 -o shared/libspqr.so.1.1.2 --whole-archive SPQR/Lib/libspqr.a -lblas -llapack -ltbb -L./shared -lcholmod && ln -sf libspqr.so.1.1.2 shared/libspqr.so && ln -sf libspqr.so.1.1.2 shared/libspqr.so.1
    ld -shared -soname libcxsparse.so.2 -o shared/libcxsparse.so.2.2.3 --whole-archive CXSparse/Lib/libcxsparse.a && ln -sf libcxsparse.so.2.2.3 shared/libcxsparse.so && ln -sf libcxsparse.so.2.2.3 shared/libcxsparse.so.2
    ld -shared -soname libklu.so.1 -o shared/libklu.so.1.1.0 --whole-archive KLU/Lib/libklu.a -L./shared -lamd -lcolamd -lbtf && ln -sf libklu.so.1.1.0 shared/libklu.so && ln -sf libklu.so.1.1.0 shared/libklu.so.1
    ld -shared -soname libumfpack.so.5 -o shared/libumfpack.so.5.4.0 --whole-archive UMFPACK/Lib/libumfpack.a -lblas -llapack -L./shared -lamd && ln -sf libumfpack.so.5.4.0 shared/libumfpack.so && ln -sf libumfpack.so.5.4.0 shared/libumfpack.so.5

    # Install static and shared libs
    mkdir -p $startdir/pkg/usr/lib${LIBDIRSUFFIX}

    cp -d shared/*.so* $startdir/pkg/usr/lib${LIBDIRSUFFIX}/ || return 1
    ldconfig -n $startdir/pkg/usr/lib${LIBDIRSUFFIX}
    cp CAMD/Lib/libcamd.a $startdir/pkg/usr/lib${LIBDIRSUFFIX}/ || return 1
    cp COLAMD/Lib/libcolamd.a $startdir/pkg/usr/lib${LIBDIRSUFFIX}/ || return 1
    cp CCOLAMD/Lib/libccolamd.a $startdir/pkg/usr/lib${LIBDIRSUFFIX}/ || return 1
    cp AMD/Lib/libamd.a $startdir/pkg/usr/lib${LIBDIRSUFFIX}/ || return 1
    cp LDL/Lib/libldl.a $startdir/pkg/usr/lib${LIBDIRSUFFIX}/ || return 1
    cp CHOLMOD/Lib/libcholmod.a $startdir/pkg/usr/lib${LIBDIRSUFFIX}/ || return 1
    cp SPQR/Lib/libspqr.a $startdir/pkg/usr/lib${LIBDIRSUFFIX}/ || return 1
    cp CXSparse/Lib/libcxsparse.a $startdir/pkg/usr/lib${LIBDIRSUFFIX}/ || return 1
    cp KLU/Lib/libklu.a $startdir/pkg/usr/lib${LIBDIRSUFFIX}/ || return 1
    cp BTF/Lib/libbtf.a $startdir/pkg/usr/lib${LIBDIRSUFFIX}/ || return 1
    cp UMFPACK/Lib/libumfpack.a $startdir/pkg/usr/lib${LIBDIRSUFFIX}/ || return 1

    # Install headers
    mkdir $startdir/pkg/usr/include

    cp CAMD/Include/*.h $startdir/pkg/usr/include/ || return 1
    cp COLAMD/Include/*.h $startdir/pkg/usr/include/ || return 1
    cp LDL/Include/*.h $startdir/pkg/usr/include/ || return 1
    cp CHOLMOD/Include/*.h $startdir/pkg/usr/include/ || return 1
    cp SPQR/Include/*.h $startdir/pkg/usr/include/ || return 1
    cp CXSparse/Include/*.h $startdir/pkg/usr/include/ || return 1
    cp KLU/Include/*.h $startdir/pkg/usr/include/ || return 1
    cp BTF/Include/*.h $startdir/pkg/usr/include/ || return 1
    cp UMFPACK/Include/*.h $startdir/pkg/usr/include/ || return 1
    cp UFconfig/*.h $startdir/pkg/usr/include/ || return 1
    cp CCOLAMD/Include/*.h $startdir/pkg/usr/include/ || return 1
    cp AMD/Include/*.h $startdir/pkg/usr/include/ || return 1

    # Install documentation
    mkdir -p $startdir/pkg/usr/doc/$pkgname-$pkgver

    cp AMD/Doc/AMD_UserGuide.pdf CAMD/Doc/CAMD_UserGuide.pdf KLU/Doc/KLU_UserGuide.pdf KLU/Doc/palamadai_e.pdf LDL/Doc/ldl_userguide.pdf SPQR/Doc/spqr_user_guide.pdf $startdir/pkg/usr/share/doc/$pkgname
    cp CHOLMOD/Doc/UserGuide.pdf $startdir/pkg/usr/doc/$pkgname-$pkgver/CHOLMOD_UserGuide.pdf
    cp UMFPACK/Doc/UserGuide.pdf $startdir/pkg/usr/doc/$pkgname-$pkgver/UMFPACK_UserGuide.pdf
    cp UMFPACK/Doc/QuickStart.pdf $startdir/pkg/usr/doc/$pkgname-$pkgver/UMFPACK_QuickStart.pdf
}