summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sci-libs/superlu/ChangeLog8
-rw-r--r--sci-libs/superlu/files/superlu-4.1-autotools.patch575
-rw-r--r--sci-libs/superlu/files/superlu-examples.patch2
-rw-r--r--sci-libs/superlu/superlu-4.1.ebuild65
4 files changed, 648 insertions, 2 deletions
diff --git a/sci-libs/superlu/ChangeLog b/sci-libs/superlu/ChangeLog
index de26266e514b..6e5858dd95f8 100644
--- a/sci-libs/superlu/ChangeLog
+++ b/sci-libs/superlu/ChangeLog
@@ -1,6 +1,12 @@
# ChangeLog for sci-libs/superlu
# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sci-libs/superlu/ChangeLog,v 1.2 2010/09/27 06:26:22 bicatali Exp $
+# $Header: /var/cvsroot/gentoo-x86/sci-libs/superlu/ChangeLog,v 1.3 2010/12/12 18:27:41 bicatali Exp $
+
+*superlu-4.1 (12 Dec 2010)
+
+ 12 Dec 2010; Sébastien Fabbro <bicatali@gentoo.org> +superlu-4.1.ebuild,
+ +files/superlu-4.1-autotools.patch, files/superlu-examples.patch:
+ Version bump
*superlu-4.0-r2 (27 Sep 2010)
diff --git a/sci-libs/superlu/files/superlu-4.1-autotools.patch b/sci-libs/superlu/files/superlu-4.1-autotools.patch
new file mode 100644
index 000000000000..dab5e4fbf129
--- /dev/null
+++ b/sci-libs/superlu/files/superlu-4.1-autotools.patch
@@ -0,0 +1,575 @@
+diff -Nur SuperLU_4.1.orig/ax_blas.m4 SuperLU_4.1/ax_blas.m4
+--- SuperLU_4.1.orig/ax_blas.m4 1970-01-01 01:00:00.000000000 +0100
++++ SuperLU_4.1/ax_blas.m4 2010-12-12 17:41:08.000000000 +0000
+@@ -0,0 +1,201 @@
++# ===========================================================================
++# http://www.gnu.org/software/autoconf-archive/ax_blas.html
++# ===========================================================================
++#
++# SYNOPSIS
++#
++# AX_BLAS([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
++#
++# DESCRIPTION
++#
++# This macro looks for a library that implements the BLAS linear-algebra
++# interface (see http://www.netlib.org/blas/). On success, it sets the
++# BLAS_LIBS output variable to hold the requisite library linkages.
++#
++# To link with BLAS, you should link with:
++#
++# $BLAS_LIBS $LIBS $FLIBS
++#
++# in that order. FLIBS is the output variable of the
++# AC_F77_LIBRARY_LDFLAGS macro (called if necessary by AX_BLAS), and is
++# sometimes necessary in order to link with F77 libraries. Users will also
++# need to use AC_F77_DUMMY_MAIN (see the autoconf manual), for the same
++# reason.
++#
++# Many libraries are searched for, from ATLAS to CXML to ESSL. The user
++# may also use --with-blas=<lib> in order to use some specific BLAS
++# library <lib>. In order to link successfully, however, be aware that you
++# will probably need to use the same Fortran compiler (which can be set
++# via the F77 env. var.) as was used to compile the BLAS library.
++#
++# ACTION-IF-FOUND is a list of shell commands to run if a BLAS library is
++# found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it is
++# not found. If ACTION-IF-FOUND is not specified, the default action will
++# define HAVE_BLAS.
++#
++# LICENSE
++#
++# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
++#
++# This program is free software: you can redistribute it and/or modify it
++# under the terms of the GNU General Public License as published by the
++# Free Software Foundation, either version 3 of the License, or (at your
++# option) any later version.
++#
++# This program is distributed in the hope that it will be useful, but
++# WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
++# Public License for more details.
++#
++# You should have received a copy of the GNU General Public License along
++# with this program. If not, see <http://www.gnu.org/licenses/>.
++#
++# As a special exception, the respective Autoconf Macro's copyright owner
++# gives unlimited permission to copy, distribute and modify the configure
++# scripts that are the output of Autoconf when processing the Macro. You
++# need not follow the terms of the GNU General Public License when using
++# or distributing such scripts, even though portions of the text of the
++# Macro appear in them. The GNU General Public License (GPL) does govern
++# all other use of the material that constitutes the Autoconf Macro.
++#
++# This special exception to the GPL applies to versions of the Autoconf
++# Macro released by the Autoconf Archive. When you make and distribute a
++# modified version of the Autoconf Macro, you may extend this special
++# exception to the GPL to apply to your modified version as well.
++
++#serial 11
++
++AU_ALIAS([ACX_BLAS], [AX_BLAS])
++AC_DEFUN([AX_BLAS], [
++AC_PREREQ(2.50)
++AC_REQUIRE([AC_F77_LIBRARY_LDFLAGS])
++ax_blas_ok=no
++
++AC_ARG_WITH(blas,
++ [AS_HELP_STRING([--with-blas=<lib>], [use BLAS library <lib>])])
++case $with_blas in
++ yes | "") ;;
++ no) ax_blas_ok=disable ;;
++ -* | */* | *.a | *.so | *.so.* | *.o) BLAS_LIBS="$with_blas" ;;
++ *) BLAS_LIBS="-l$with_blas" ;;
++esac
++
++# Get fortran linker names of BLAS functions to check for.
++AC_F77_FUNC(sgemm)
++AC_F77_FUNC(dgemm)
++
++ax_blas_save_LIBS="$LIBS"
++LIBS="$LIBS $FLIBS"
++
++# First, check BLAS_LIBS environment variable
++if test $ax_blas_ok = no; then
++if test "x$BLAS_LIBS" != x; then
++ save_LIBS="$LIBS"; LIBS="$BLAS_LIBS $LIBS"
++ AC_MSG_CHECKING([for $sgemm in $BLAS_LIBS])
++ AC_TRY_LINK_FUNC($sgemm, [ax_blas_ok=yes], [BLAS_LIBS=""])
++ AC_MSG_RESULT($ax_blas_ok)
++ LIBS="$save_LIBS"
++fi
++fi
++
++# BLAS linked to by default? (happens on some supercomputers)
++if test $ax_blas_ok = no; then
++ save_LIBS="$LIBS"; LIBS="$LIBS"
++ AC_MSG_CHECKING([if $sgemm is being linked in already])
++ AC_TRY_LINK_FUNC($sgemm, [ax_blas_ok=yes])
++ AC_MSG_RESULT($ax_blas_ok)
++ LIBS="$save_LIBS"
++fi
++
++# BLAS in ATLAS library? (http://math-atlas.sourceforge.net/)
++if test $ax_blas_ok = no; then
++ AC_CHECK_LIB(atlas, ATL_xerbla,
++ [AC_CHECK_LIB(f77blas, $sgemm,
++ [AC_CHECK_LIB(cblas, cblas_dgemm,
++ [ax_blas_ok=yes
++ BLAS_LIBS="-lcblas -lf77blas -latlas"],
++ [], [-lf77blas -latlas])],
++ [], [-latlas])])
++fi
++
++# BLAS in PhiPACK libraries? (requires generic BLAS lib, too)
++if test $ax_blas_ok = no; then
++ AC_CHECK_LIB(blas, $sgemm,
++ [AC_CHECK_LIB(dgemm, $dgemm,
++ [AC_CHECK_LIB(sgemm, $sgemm,
++ [ax_blas_ok=yes; BLAS_LIBS="-lsgemm -ldgemm -lblas"],
++ [], [-lblas])],
++ [], [-lblas])])
++fi
++
++# BLAS in Intel MKL library?
++if test $ax_blas_ok = no; then
++ AC_CHECK_LIB(mkl, $sgemm, [ax_blas_ok=yes;BLAS_LIBS="-lmkl"])
++fi
++
++# BLAS in Apple vecLib library?
++if test $ax_blas_ok = no; then
++ save_LIBS="$LIBS"; LIBS="-framework vecLib $LIBS"
++ AC_MSG_CHECKING([for $sgemm in -framework vecLib])
++ AC_TRY_LINK_FUNC($sgemm, [ax_blas_ok=yes;BLAS_LIBS="-framework vecLib"])
++ AC_MSG_RESULT($ax_blas_ok)
++ LIBS="$save_LIBS"
++fi
++
++# BLAS in Alpha CXML library?
++if test $ax_blas_ok = no; then
++ AC_CHECK_LIB(cxml, $sgemm, [ax_blas_ok=yes;BLAS_LIBS="-lcxml"])
++fi
++
++# BLAS in Alpha DXML library? (now called CXML, see above)
++if test $ax_blas_ok = no; then
++ AC_CHECK_LIB(dxml, $sgemm, [ax_blas_ok=yes;BLAS_LIBS="-ldxml"])
++fi
++
++# BLAS in Sun Performance library?
++if test $ax_blas_ok = no; then
++ if test "x$GCC" != xyes; then # only works with Sun CC
++ AC_CHECK_LIB(sunmath, acosp,
++ [AC_CHECK_LIB(sunperf, $sgemm,
++ [BLAS_LIBS="-xlic_lib=sunperf -lsunmath"
++ ax_blas_ok=yes],[],[-lsunmath])])
++ fi
++fi
++
++# BLAS in SCSL library? (SGI/Cray Scientific Library)
++if test $ax_blas_ok = no; then
++ AC_CHECK_LIB(scs, $sgemm, [ax_blas_ok=yes; BLAS_LIBS="-lscs"])
++fi
++
++# BLAS in SGIMATH library?
++if test $ax_blas_ok = no; then
++ AC_CHECK_LIB(complib.sgimath, $sgemm,
++ [ax_blas_ok=yes; BLAS_LIBS="-lcomplib.sgimath"])
++fi
++
++# BLAS in IBM ESSL library? (requires generic BLAS lib, too)
++if test $ax_blas_ok = no; then
++ AC_CHECK_LIB(blas, $sgemm,
++ [AC_CHECK_LIB(essl, $sgemm,
++ [ax_blas_ok=yes; BLAS_LIBS="-lessl -lblas"],
++ [], [-lblas $FLIBS])])
++fi
++
++# Generic BLAS library?
++if test $ax_blas_ok = no; then
++ AC_CHECK_LIB(blas, $sgemm, [ax_blas_ok=yes; BLAS_LIBS="-lblas"])
++fi
++
++AC_SUBST(BLAS_LIBS)
++
++LIBS="$ax_blas_save_LIBS"
++
++# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
++if test x"$ax_blas_ok" = xyes; then
++ ifelse([$1],,AC_DEFINE(HAVE_BLAS,1,[Define if you have a BLAS library.]),[$1])
++ :
++else
++ ax_blas_ok=no
++ $2
++fi
++])dnl AX_BLAS
+diff -Nur SuperLU_4.1.orig/configure.ac SuperLU_4.1/configure.ac
+--- SuperLU_4.1.orig/configure.ac 1970-01-01 01:00:00.000000000 +0100
++++ SuperLU_4.1/configure.ac 2010-12-12 17:41:31.000000000 +0000
+@@ -0,0 +1,16 @@
++# -*- Autoconf -*-
++AC_PREREQ(2.59)
++AC_INIT(superlu, 4.0, xsli@lbl.gov)
++AM_INIT_AUTOMAKE([foreign])
++AC_CONFIG_HEADER([config.h])
++AC_PROG_INSTALL
++AC_PROG_LIBTOOL
++AC_PROG_F77
++sinclude(ax_blas.m4)
++AX_BLAS
++if test x"$BLAS_LIBS" = x; then
++ AC_MSG_ERROR([Cannot find blas libraries])
++fi
++AC_CHECK_LIB([m], [floor])
++AC_CONFIG_FILES([Makefile SRC/Makefile superlu.pc])
++AC_OUTPUT
+diff -Nur SuperLU_4.1.orig/EXAMPLE/Makefile SuperLU_4.1/EXAMPLE/Makefile
+--- SuperLU_4.1.orig/EXAMPLE/Makefile 2010-08-11 23:40:19.000000000 +0100
++++ SuperLU_4.1/EXAMPLE/Makefile 2010-12-12 17:50:34.000000000 +0000
+@@ -1,4 +1,3 @@
+-include ../make.inc
+
+ #######################################################################
+ # This makefile creates the example programs for the linear equation
+@@ -32,7 +31,9 @@
+ #
+ #######################################################################
+
+-HEADER = ../SRC
++HEADER = $(shell pkg-config --cflags superlu)
++LIBS = $(shell pkg-config --libs superlu)
++CDEFS = -DAdd_
+
+ SLINEXM = slinsol.o
+ SLINEXM1 = slinsol1.o
+@@ -63,7 +64,6 @@
+ ZLINXEXM2 = zlinsolx2.o
+ ZITSOL = zitersol.o zfgmr.o
+
+-
+ all: single double complex complex16
+
+ single: slinsol slinsol1 slinsolx slinsolx1 slinsolx2 sitersol
+@@ -71,86 +71,86 @@
+ complex: clinsol clinsol1 clinsolx clinsolx1 clinsolx2 citersol
+ complex16: zlinsol zlinsol1 zlinsolx zlinsolx1 zlinsolx2 zitersol
+
+-slinsol: $(SLINEXM) $(SUPERLULIB)
+- $(LOADER) $(LOADOPTS) $(SLINEXM) $(LIBS) -lm -o $@
++slinsol: $(SLINEXM)
++ $(LD) $(LDFLAGS) $(SLINEXM) $(LIBS) -o $@
+
+-slinsol1: $(SLINEXM1) $(SUPERLULIB)
+- $(LOADER) $(LOADOPTS) $(SLINEXM1) $(LIBS) -lm -o $@
++slinsol1: $(SLINEXM1)
++ $(LD) $(LDFLAGS) $(SLINEXM1) $(LIBS) -o $@
+
+-slinsolx: $(SLINXEXM) $(SUPERLULIB)
+- $(LOADER) $(LOADOPTS) $(SLINXEXM) $(LIBS) -lm -o $@
++slinsolx: $(SLINXEXM)
++ $(LD) $(LDFLAGS) $(SLINXEXM) $(LIBS) -o $@
+
+-slinsolx1: $(SLINXEXM1) $(SUPERLULIB)
+- $(LOADER) $(LOADOPTS) $(SLINXEXM1) $(LIBS) -lm -o $@
++slinsolx1: $(SLINXEXM1)
++ $(LD) $(LDFLAGS) $(SLINXEXM1) $(LIBS) -o $@
+
+-slinsolx2: $(SLINXEXM2) $(SUPERLULIB)
+- $(LOADER) $(LOADOPTS) $(SLINXEXM2) $(LIBS) -lm -o $@
++slinsolx2: $(SLINXEXM2)
++ $(LD) $(LDFLAGS) $(SLINXEXM2) $(LIBS) -o $@
+
+-sitersol: $(SITSOL) $(SUPERLULIB)
+- $(LOADER) $(LOADOPTS) $(SITSOL) $(LIBS) -lm -o $@
++sitersol: $(SITSOL)
++ $(LD) $(LDFLAGS) $(SITSOL) $(LIBS) -o $@
+
+-dlinsol: $(DLINEXM) $(SUPERLULIB)
+- $(LOADER) $(LOADOPTS) $(DLINEXM) $(LIBS) -lm -o $@
++dlinsol: $(DLINEXM)
++ $(LD) $(LDFLAGS) $(DLINEXM) $(LIBS) -o $@
+
+-dlinsol1: $(DLINEXM1) $(SUPERLULIB)
+- $(LOADER) $(LOADOPTS) $(DLINEXM1) $(LIBS) -lm -o $@
++dlinsol1: $(DLINEXM1)
++ $(LD) $(LDFLAGS) $(DLINEXM1) $(LIBS) -o $@
+
+-dlinsolx: $(DLINXEXM) $(SUPERLULIB)
+- $(LOADER) $(LOADOPTS) $(DLINXEXM) $(LIBS) -lm -o $@
++dlinsolx: $(DLINXEXM)
++ $(LD) $(LDFLAGS) $(DLINXEXM) $(LIBS) -o $@
+
+-dlinsolx1: $(DLINXEXM1) $(SUPERLULIB)
+- $(LOADER) $(LOADOPTS) $(DLINXEXM1) $(LIBS) -lm -o $@
++dlinsolx1: $(DLINXEXM1)
++ $(LD) $(LDFLAGS) $(DLINXEXM1) $(LIBS) -o $@
+
+-dlinsolx2: $(DLINXEXM2) $(SUPERLULIB)
+- $(LOADER) $(LOADOPTS) $(DLINXEXM2) $(LIBS) -lm -o $@
++dlinsolx2: $(DLINXEXM2)
++ $(LD) $(LDFLAGS) $(DLINXEXM2) $(LIBS) -o $@
+
+-superlu: $(SUPERLUEXM) $(SUPERLULIB)
+- $(LOADER) $(LOADOPTS) $(SUPERLUEXM) $(LIBS) -lm -o $@
++superlu: $(SUPERLUEXM)
++ $(LD) $(LDFLAGS) $(SUPERLUEXM) $(LIBS) -o $@
+
+-ditersol: $(DITSOL) $(SUPERLULIB)
+- $(LOADER) $(LOADOPTS) $(DITSOL) $(LIBS) -lm -o $@
++ditersol: $(DITSOL)
++ $(LD) $(LDFLAGS) $(DITSOL) $(LIBS) -o $@
+
+-clinsol: $(CLINEXM) $(SUPERLULIB)
+- $(LOADER) $(LOADOPTS) $(CLINEXM) $(LIBS) -lm -o $@
++clinsol: $(CLINEXM)
++ $(LD) $(LDFLAGS) $(CLINEXM) $(LIBS) -o $@
+
+-clinsol1: $(CLINEXM1) $(SUPERLULIB)
+- $(LOADER) $(LOADOPTS) $(CLINEXM1) $(LIBS) -lm -o $@
++clinsol1: $(CLINEXM1)
++ $(LD) $(LDFLAGS) $(CLINEXM1) $(LIBS) -o $@
+
+-clinsolx: $(CLINXEXM) $(SUPERLULIB)
+- $(LOADER) $(LOADOPTS) $(CLINXEXM) $(LIBS) -lm -o $@
++clinsolx: $(CLINXEXM)
++ $(LD) $(LDFLAGS) $(CLINXEXM) $(LIBS) -o $@
+
+-clinsolx1: $(CLINXEXM1) $(SUPERLULIB)
+- $(LOADER) $(LOADOPTS) $(CLINXEXM1) $(LIBS) -lm -o $@
++clinsolx1: $(CLINXEXM1)
++ $(LD) $(LDFLAGS) $(CLINXEXM1) $(LIBS) -o $@
+
+-clinsolx2: $(CLINXEXM2) $(SUPERLULIB)
+- $(LOADER) $(LOADOPTS) $(CLINXEXM2) $(LIBS) -lm -o $@
++clinsolx2: $(CLINXEXM2)
++ $(LD) $(LDFLAGS) $(CLINXEXM2) $(LIBS) -o $@
+
+-citersol: $(CITSOL) $(SUPERLULIB)
+- $(LOADER) $(LOADOPTS) $(CITSOL) $(LIBS) -lm -o $@
++citersol: $(CITSOL)
++ $(LD) $(LDFLAGS) $(CITSOL) $(LIBS) -o $@
+
+-zlinsol: $(ZLINEXM) $(SUPERLULIB)
+- $(LOADER) $(LOADOPTS) $(ZLINEXM) $(LIBS) -lm -o $@
++zlinsol: $(ZLINEXM)
++ $(LD) $(LDFLAGS) $(ZLINEXM) $(LIBS) -o $@
+
+-zlinsol1: $(ZLINEXM1) $(SUPERLULIB)
+- $(LOADER) $(LOADOPTS) $(ZLINEXM1) $(LIBS) -lm -o $@
++zlinsol1: $(ZLINEXM1)
++ $(LD) $(LDFLAGS) $(ZLINEXM1) $(LIBS) -o $@
+
+-zlinsolx: $(ZLINXEXM) $(SUPERLULIB)
+- $(LOADER) $(LOADOPTS) $(ZLINXEXM) $(LIBS) -lm -o $@
++zlinsolx: $(ZLINXEXM)
++ $(LD) $(LDFLAGS) $(ZLINXEXM) $(LIBS) -o $@
+
+-zlinsolx1: $(ZLINXEXM1) $(SUPERLULIB)
+- $(LOADER) $(LOADOPTS) $(ZLINXEXM1) $(LIBS) -lm -o $@
++zlinsolx1: $(ZLINXEXM1)
++ $(LD) $(LDFLAGS) $(ZLINXEXM1) $(LIBS) -o $@
+
+-zlinsolx2: $(ZLINXEXM2) $(SUPERLULIB)
+- $(LOADER) $(LOADOPTS) $(ZLINXEXM2) $(LIBS) -lm -o $@
++zlinsolx2: $(ZLINXEXM2)
++ $(LD) $(LDFLAGS) $(ZLINXEXM2) $(LIBS) -o $@
+
+-zitersol: $(ZITSOL) $(SUPERLULIB)
+- $(LOADER) $(LOADOPTS) $(ZITSOL) $(LIBS) -lm -o $@
++zitersol: $(ZITSOL)
++ $(LD) $(LDFLAGS) $(ZITSOL) $(LIBS) -o $@
+
+ .c.o:
+- $(CC) $(CFLAGS) $(CDEFS) -I$(HEADER) -c $< $(VERBOSE)
++ $(CC) $(CFLAGS) $(CDEFS) $(HEADER) -c $< $(VERBOSE)
+
+ .f.o:
+- $(FORTRAN) $(FFLAGS) -c $< $(VERBOSE)
++ $(FC) $(FFLAGS) -c $< $(VERBOSE)
+
+ clean:
+ rm -f *.o *linsol *linsol1 *linsolx *linsolx1 *linsolx2 \
+diff -Nur SuperLU_4.1.orig/FORTRAN/Makefile SuperLU_4.1/FORTRAN/Makefile
+--- SuperLU_4.1.orig/FORTRAN/Makefile 2010-08-11 23:40:19.000000000 +0100
++++ SuperLU_4.1/FORTRAN/Makefile 2010-12-12 17:50:23.000000000 +0000
+@@ -1,28 +1,27 @@
+-include ../make.inc
+
+ #######################################################################
+ # This makefile creates the Fortran example interface to use the
+ # C routines in SuperLU.
+ #######################################################################
+
+-HEADER = ../SRC
+-LIBS = $(SUPERLULIB) $(BLASLIB) -lm
++HEADER = $(shell pkg-config --cflags superlu)
++LIBS = $(shell pkg-config --libs superlu)
+
+ F77EXM = f77_main.o hbcode1.o c_fortran_dgssv.o
+
+ all: f77exm
+
+-f77exm: $(F77EXM) $(SUPERLULIB)
+- $(FORTRAN) $(LOADOPTS) $(F77EXM) $(LIBS) -o $@
++f77exm: $(F77EXM)
++ $(FC) $(LDFLAGS) $(F77EXM) $(LIBS) -o $@
+
+ c_fortran_zgssv.o: c_fortran_zgssv.c
+- $(CC) $(CFLAGS) $(CDEFS) -I$(HEADER) -c $< $(VERBOSE)
++ $(CC) $(CFLAGS) $(CDEFS) $(HEADER) -c $< $(VERBOSE)
+
+ .c.o:
+- $(CC) $(CFLAGS) $(CDEFS) -I$(HEADER) -c $< $(VERBOSE)
++ $(CC) $(CFLAGS) $(CDEFS) -c $< $(VERBOSE)
+
+ .f.o:
+- $(FORTRAN) $(FFLAGS) -c $< $(VERBOSE)
++ $(FC) $(FFLAGS) -c $< $(VERBOSE)
+
+ clean:
+ rm -f *.o f77exm
+diff -Nur SuperLU_4.1.orig/Makefile.am SuperLU_4.1/Makefile.am
+--- SuperLU_4.1.orig/Makefile.am 1970-01-01 01:00:00.000000000 +0100
++++ SuperLU_4.1/Makefile.am 2010-12-12 17:47:31.000000000 +0000
+@@ -0,0 +1,4 @@
++SUBDIRS = SRC
++
++pkgconfigdir = $(libdir)/pkgconfig
++pkgconfig_DATA = superlu.pc
+diff -Nur SuperLU_4.1.orig/SRC/Makefile.am SuperLU_4.1/SRC/Makefile.am
+--- SuperLU_4.1.orig/SRC/Makefile.am 1970-01-01 01:00:00.000000000 +0100
++++ SuperLU_4.1/SRC/Makefile.am 2010-12-12 18:00:18.000000000 +0000
+@@ -0,0 +1,116 @@
++AM_CPPFLAGS = -DAdd_
++
++### headers
++noinst_HEADERS = \
++ colamd.h \
++ html_mainpage.h
++
++src_includedir = $(includedir)/superlu
++src_include_HEADERS = \
++ slu_cdefs.h \
++ slu_ddefs.h \
++ slu_sdefs.h \
++ slu_zdefs.h
++ slu_Cnames.h \
++ slu_dcomplex.h \
++ slu_scomplex.h \
++ slu_util.h \
++ superlu_enum_consts.h \
++ supermatrix.h
++
++### LAPACK
++LAAUX = lsame.c xerbla.c
++SLASRC = slacon.c
++DLASRC = dlacon.c
++CLASRC = clacon.c scsum1.c icmax1.c
++ZLASRC = zlacon.c dzsum1.c izmax1.c
++SCLAUX = slamch.c
++DZLAUX = dlamch.c
++
++### SuperLU
++ALLAUX = superlu_timer.c util.c memory.c get_perm_c.c mmd.c \
++ sp_coletree.c sp_preorder.c sp_ienv.c relax_snode.c \
++ heap_relax_snode.c colamd.c \
++ ilu_relax_snode.c ilu_heap_relax_snode.c mark_relax.c \
++ mc64ad.f qselect.f
++
++SLUSRC = \
++ sgssv.c sgssvx.c \
++ ssp_blas2.c ssp_blas3.c sgscon.c \
++ slangs.c sgsequ.c slaqgs.c spivotgrowth.c \
++ sgsrfs.c sgstrf.c sgstrs.c scopy_to_ucol.c \
++ ssnode_dfs.c ssnode_bmod.c \
++ spanel_dfs.c spanel_bmod.c sreadhb.c \
++ scolumn_dfs.c scolumn_bmod.c spivotL.c spruneL.c \
++ smemory.c sutil.c smyblas2.c \
++ sgsisx.c sgsitrf.c sldperm.c \
++ ilu_sdrop_row.c ilu_ssnode_dfs.c \
++ ilu_scolumn_dfs.c ilu_spanel_dfs.c ilu_scopy_to_ucol.c \
++ ilu_spivotL.c sdiagonal.c
++
++DLUSRC = \
++ dgssv.c dgssvx.c \
++ dsp_blas2.c dsp_blas3.c dgscon.c \
++ dlangs.c dgsequ.c dlaqgs.c dpivotgrowth.c \
++ dgsrfs.c dgstrf.c dgstrs.c dcopy_to_ucol.c \
++ dsnode_dfs.c dsnode_bmod.c \
++ dpanel_dfs.c dpanel_bmod.c dreadhb.c \
++ dcolumn_dfs.c dcolumn_bmod.c dpivotL.c dpruneL.c \
++ dmemory.c dutil.c dmyblas2.c \
++ dgsisx.c dgsitrf.c \
++ dldperm.c \
++ ilu_ddrop_row.c ilu_dsnode_dfs.c \
++ ilu_dcolumn_dfs.c ilu_dpanel_dfs.c ilu_dcopy_to_ucol.c \
++ ilu_dpivotL.c ddiagonal.c
++
++CLUSRC = \
++ scomplex.c cgssv.c cgssvx.c csp_blas2.c csp_blas3.c cgscon.c \
++ clangs.c cgsequ.c claqgs.c cpivotgrowth.c \
++ cgsrfs.c cgstrf.c cgstrs.c ccopy_to_ucol.c \
++ csnode_dfs.c csnode_bmod.c \
++ cpanel_dfs.c cpanel_bmod.c creadhb.c \
++ ccolumn_dfs.c ccolumn_bmod.c cpivotL.c cpruneL.c \
++ cmemory.c cutil.c cmyblas2.c \
++ cgsisx.c cgsitrf.c cldperm.c \
++ ilu_cdrop_row.c ilu_csnode_dfs.c \
++ ilu_ccolumn_dfs.c ilu_cpanel_dfs.c ilu_ccopy_to_ucol.c \
++ ilu_cpivotL.c cdiagonal.c
++
++ZLUSRC = \
++ dcomplex.c zgssv.c zgssvx.c zsp_blas2.c zsp_blas3.c zgscon.c \
++ zlangs.c zgsequ.c zlaqgs.c zpivotgrowth.c \
++ zgsrfs.c zgstrf.c zgstrs.c zcopy_to_ucol.c \
++ zsnode_dfs.c zsnode_bmod.c \
++ zpanel_dfs.c zpanel_bmod.c zreadhb.c \
++ zcolumn_dfs.c zcolumn_bmod.c zpivotL.c zpruneL.c \
++ zmemory.c zutil.c zmyblas2.c \
++ zgsisx.c zgsitrf.c zldperm.c \
++ ilu_zdrop_row.c ilu_zsnode_dfs.c \
++ ilu_zcolumn_dfs.c ilu_zpanel_dfs.c ilu_zcopy_to_ucol.c \
++ ilu_zpivotL.c zdiagonal.c
++
++lib_LTLIBRARIES = libsuperlu.la
++libsuperlu_la_SOURCES = \
++ $(ALLAUX) $(LAAUX) \
++ $(SCLAUX) $(DZLAUX) \
++ $(SLUSRC) $(SLASRC) \
++ $(DLUSRC) $(DLASRC) \
++ $(CLUSRC) $(CLASRC) \
++ $(ZLUSRC) $(ZLASRC)
++libsuperlu_la_LIBADD = $(BLAS_LIBS)
++libsuperlu_la_LDFLAGS = -no-undefined -version-info 4:0:0
++
++##################################
++# Do not optimize these routines #
++##################################
++LTCOMPILE_NOOPT = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS)
++
++slamch.lo: slamch.c
++ $(LTCOMPILE_NOOPT) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
++dlamch.lo: dlamch.c
++ $(LTCOMPILE_NOOPT) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
++superlu_timer.lo: superlu_timer.c
++ $(LTCOMPILE_NOOPT) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
++##################################
+diff -Nur SuperLU_4.1.orig/superlu.pc.in SuperLU_4.1/superlu.pc.in
+--- SuperLU_4.1.orig/superlu.pc.in 1970-01-01 01:00:00.000000000 +0100
++++ SuperLU_4.1/superlu.pc.in 2010-12-12 17:44:43.000000000 +0000
+@@ -0,0 +1,13 @@
++prefix=@prefix@
++exec_prefix=@exec_prefix@
++libdir=@libdir@
++includedir=@includedir@
++
++Name: @PACKAGE_NAME@
++Description: Sparse LU factorization library
++Version: @PACKAGE_VERSION@
++URL: http://www.netlib.org/blas/
++Libs: -L${libdir} -lsuperlu
++Libs.private: -lm @FLIBS@
++Requires: blas
++Cflags: -I${includedir}
diff --git a/sci-libs/superlu/files/superlu-examples.patch b/sci-libs/superlu/files/superlu-examples.patch
index a585c1a01b71..7183d9815506 100644
--- a/sci-libs/superlu/files/superlu-examples.patch
+++ b/sci-libs/superlu/files/superlu-examples.patch
@@ -4,7 +4,7 @@
-include ../make.inc
+SUPERLULIB = -lsuperlu
+BLASLIB = $(BLAS_LIBS)
-+FORTRAN = $(F77)
++FORTRAN = $(FC)
+LOADER = $(LD)
+LOADOPTS = $(LDFLAGS)
+CDEFS = -DAdd_
diff --git a/sci-libs/superlu/superlu-4.1.ebuild b/sci-libs/superlu/superlu-4.1.ebuild
new file mode 100644
index 000000000000..92f826554f0e
--- /dev/null
+++ b/sci-libs/superlu/superlu-4.1.ebuild
@@ -0,0 +1,65 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sci-libs/superlu/superlu-4.1.ebuild,v 1.1 2010/12/12 18:27:41 bicatali Exp $
+
+EAPI="2"
+
+inherit autotools eutils toolchain-funcs
+
+MY_PN=SuperLU
+
+DESCRIPTION="Sparse LU factorization library"
+HOMEPAGE="http://crd.lbl.gov/~xiaoye/SuperLU/"
+SRC_URI="${HOMEPAGE}/${PN}_${PV}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="doc examples static-libs test"
+
+RDEPEND="virtual/blas"
+DEPEND="${RDEPEND}
+ dev-util/pkgconfig
+ test? ( app-shells/tcsh )"
+
+S="${WORKDIR}/${MY_PN}_${PV}"
+
+src_prepare() {
+ epatch "${FILESDIR}"/${P}-autotools.patch
+ eautoreconf
+}
+
+src_configure() {
+ econf \
+ --with-blas="$(pkg-config --libs blas)" \
+ $(use_enable static-libs static)
+}
+
+src_test() {
+ cd TESTING
+ emake -j1 \
+ CC="$(tc-getCC)" \
+ FORTRAN="$(tc-getFC)" \
+ LOADER="$(tc-getCC)" \
+ CFLAGS="${CFLAGS}" \
+ FFLAGS="${FFLAGS}" \
+ LOADOPTS="${LDFLAGS}" \
+ BLASLIB="$(pkg-config --libs blas)" \
+ SUPERLULIB="${S}/SRC/.libs/libsuperlu.so" \
+ LD_LIBRARY_PATH="${S}/SRC/.libs" \
+ || die "emake matrix generation failed"
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die "emake install failed"
+ dodoc README
+
+ if use doc; then
+ dodoc DOC/ug.pdf || die
+ dohtml DOC/html/* || die
+ fi
+ if use examples; then
+ insinto /usr/share/doc/${PF}/examples
+ doins -r EXAMPLE FORTRAN || die
+ fi
+}