summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sci-libs/umfpack')
-rw-r--r--sci-libs/umfpack/ChangeLog8
-rw-r--r--sci-libs/umfpack/files/umfpack-5.5.0-autotools.patch560
-rw-r--r--sci-libs/umfpack/metadata.xml3
-rw-r--r--sci-libs/umfpack/umfpack-5.5.0.ebuild46
4 files changed, 616 insertions, 1 deletions
diff --git a/sci-libs/umfpack/ChangeLog b/sci-libs/umfpack/ChangeLog
index b107ed693087..6529a47890e4 100644
--- a/sci-libs/umfpack/ChangeLog
+++ b/sci-libs/umfpack/ChangeLog
@@ -1,6 +1,12 @@
# ChangeLog for sci-libs/umfpack
# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sci-libs/umfpack/ChangeLog,v 1.17 2010/01/02 18:19:03 fauli Exp $
+# $Header: /var/cvsroot/gentoo-x86/sci-libs/umfpack/ChangeLog,v 1.18 2010/05/14 21:46:31 bicatali Exp $
+
+*umfpack-5.5.0 (14 May 2010)
+
+ 14 May 2010; Sébastien Fabbro <bicatali@gentoo.org>
+ +umfpack-5.5.0.ebuild, +files/umfpack-5.5.0-autotools.patch, metadata.xml:
+ Version bump. Now can use METIS partitioning, via CHOLMOD
02 Jan 2010; Christian Faulhammer <fauli@gentoo.org> umfpack-5.4.0.ebuild:
Transfer Prefix keywords
diff --git a/sci-libs/umfpack/files/umfpack-5.5.0-autotools.patch b/sci-libs/umfpack/files/umfpack-5.5.0-autotools.patch
new file mode 100644
index 000000000000..44db752f45c5
--- /dev/null
+++ b/sci-libs/umfpack/files/umfpack-5.5.0-autotools.patch
@@ -0,0 +1,560 @@
+diff -Nur UMFPACK.orig/acx_blas.m4 UMFPACK/acx_blas.m4
+--- UMFPACK.orig/acx_blas.m4 1970-01-01 01:00:00.000000000 +0100
++++ UMFPACK/acx_blas.m4 2010-05-14 20:54:52.000000000 +0100
+@@ -0,0 +1,191 @@
++##### http://autoconf-archive.cryp.to/acx_blas.html
++#
++# SYNOPSIS
++#
++# ACX_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 ACX_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.
++#
++# This macro requires autoconf 2.50 or later.
++#
++# LAST MODIFICATION
++#
++# 2007-07-29
++#
++# COPYLEFT
++#
++# Copyright (c) 2007 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 Macro 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.
++
++AC_DEFUN([ACX_BLAS], [
++AC_PREREQ(2.50)
++AC_REQUIRE([AC_F77_LIBRARY_LDFLAGS])
++acx_blas_ok=no
++
++AC_ARG_WITH(blas,
++ [AC_HELP_STRING([--with-blas=<lib>], [use BLAS library <lib>])])
++case $with_blas in
++ yes | "") ;;
++ no) acx_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)
++
++acx_blas_save_LIBS="$LIBS"
++LIBS="$LIBS $FLIBS"
++
++# First, check BLAS_LIBS environment variable
++if test $acx_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, [acx_blas_ok=yes], [BLAS_LIBS=""])
++ AC_MSG_RESULT($acx_blas_ok)
++ LIBS="$save_LIBS"
++fi
++fi
++
++# BLAS linked to by default? (happens on some supercomputers)
++if test $acx_blas_ok = no; then
++ save_LIBS="$LIBS"; LIBS="$LIBS"
++ AC_CHECK_FUNC($sgemm, [acx_blas_ok=yes])
++ LIBS="$save_LIBS"
++fi
++
++# BLAS in ATLAS library? (http://math-atlas.sourceforge.net/)
++if test $acx_blas_ok = no; then
++ AC_CHECK_LIB(atlas, ATL_xerbla,
++ [AC_CHECK_LIB(f77blas, $sgemm,
++ [AC_CHECK_LIB(cblas, cblas_dgemm,
++ [acx_blas_ok=yes
++ BLAS_LIBS="-lcblas -lf77blas -latlas"],
++ [], [-lf77blas -latlas])],
++ [], [-latlas])])
++fi
++
++# BLAS in PhiPACK libraries? (requires generic BLAS lib, too)
++if test $acx_blas_ok = no; then
++ AC_CHECK_LIB(blas, $sgemm,
++ [AC_CHECK_LIB(dgemm, $dgemm,
++ [AC_CHECK_LIB(sgemm, $sgemm,
++ [acx_blas_ok=yes; BLAS_LIBS="-lsgemm -ldgemm -lblas"],
++ [], [-lblas])],
++ [], [-lblas])])
++fi
++
++# BLAS in Alpha CXML library?
++if test $acx_blas_ok = no; then
++ AC_CHECK_LIB(cxml, $sgemm, [acx_blas_ok=yes;BLAS_LIBS="-lcxml"])
++fi
++
++# BLAS in Alpha DXML library? (now called CXML, see above)
++if test $acx_blas_ok = no; then
++ AC_CHECK_LIB(dxml, $sgemm, [acx_blas_ok=yes;BLAS_LIBS="-ldxml"])
++fi
++
++# BLAS in Sun Performance library?
++if test $acx_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"
++ acx_blas_ok=yes],[],[-lsunmath])])
++ fi
++fi
++
++# BLAS in SCSL library? (SGI/Cray Scientific Library)
++if test $acx_blas_ok = no; then
++ AC_CHECK_LIB(scs, $sgemm, [acx_blas_ok=yes; BLAS_LIBS="-lscs"])
++fi
++
++# BLAS in SGIMATH library?
++if test $acx_blas_ok = no; then
++ AC_CHECK_LIB(complib.sgimath, $sgemm,
++ [acx_blas_ok=yes; BLAS_LIBS="-lcomplib.sgimath"])
++fi
++
++# BLAS in IBM ESSL library? (requires generic BLAS lib, too)
++if test $acx_blas_ok = no; then
++ AC_CHECK_LIB(blas, $sgemm,
++ [AC_CHECK_LIB(essl, $sgemm,
++ [acx_blas_ok=yes; BLAS_LIBS="-lessl -lblas"],
++ [], [-lblas $FLIBS])])
++fi
++
++# Generic BLAS library?
++if test $acx_blas_ok = no; then
++ AC_CHECK_LIB(blas, $sgemm, [acx_blas_ok=yes; BLAS_LIBS="-lblas"])
++fi
++
++AC_SUBST(BLAS_LIBS)
++
++LIBS="$acx_blas_save_LIBS"
++
++# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
++if test x"$acx_blas_ok" = xyes; then
++ ifelse([$1],,AC_DEFINE(HAVE_BLAS,1,[Define if you have a BLAS library.]),[$1])
++ :
++else
++ acx_blas_ok=no
++ $2
++fi
++])dnl ACX_BLAS
+diff -Nur UMFPACK.orig/configure.ac UMFPACK/configure.ac
+--- UMFPACK.orig/configure.ac 1970-01-01 01:00:00.000000000 +0100
++++ UMFPACK/configure.ac 2010-05-14 20:55:11.000000000 +0100
+@@ -0,0 +1,44 @@
++# -*- Autoconf -*-
++AC_PREREQ(2.59)
++AC_INIT(umfpack, 5.5.0, davis@cise.ufl.edu)
++AC_CONFIG_SRCDIR([Source/umf_solve.c])
++AM_INIT_AUTOMAKE([foreign])
++AC_PROG_INSTALL
++AC_PROG_F77
++AC_PROG_LIBTOOL
++AC_CHECK_LIB(m, sqrt)
++sinclude(acx_blas.m4)
++ACX_BLAS
++if test x"$BLAS_LIBS" = x; then
++ AC_MSG_ERROR([Cannot find blas libraries])
++fi
++AC_CHECK_LIB(amd, amd_aat)
++
++AC_ARG_WITH(cholmod,
++ [AC_HELP_STRING([--with-cholmod],
++ [Use CHOLMOD for ordering methods])],
++ [with_cholmod=$withval],
++ [with_cholmod="yes"])
++if test x$with_cholmod = xyes; then
++ AC_CHECK_HEADERS(cholmod.h)
++ AC_CHECK_LIB(cholmod, cholmod_solve, [], \
++ [AC_MSG_ERROR([Cannot find libcholmod])])
++
++ PKG_PROG_PKG_CONFIG
++ if test -n "$PKG_CONFIG"; then
++ PKG_CHECK_MODULES([metis], [metis])
++ else
++ AC_CHECK_HEADERS(metis.h)
++ AC_CHECK_LIB(metis, METIS_NodeND, [METIS_LIBS=-lmetis], \
++ [AC_MSG_ERROR([CHOLMOD needs metis. Cannot find libmetis])])
++ fi
++ AC_DEFINE(NCHOLMOD)
++fi
++AM_CONDITIONAL([CHOLMOD], [test x$with_cholmod = xyes])
++
++
++AC_CONFIG_FILES([Source/Makefile
++ Include/Makefile
++ Demo/Makefile
++ Makefile])
++AC_OUTPUT
+diff -Nur UMFPACK.orig/Demo/Makefile.am UMFPACK/Demo/Makefile.am
+--- UMFPACK.orig/Demo/Makefile.am 1970-01-01 01:00:00.000000000 +0100
++++ UMFPACK/Demo/Makefile.am 2010-05-14 20:54:52.000000000 +0100
+@@ -0,0 +1,44 @@
++AM_CPPFLAGS = -I$(top_srcdir)/Include
++LDADD = $(top_builddir)/Source/libumfpack.la
++
++check_PROGRAMS = umfpack_simple \
++ umfpack_di_demo \
++ umfpack_dl_demo \
++ umfpack_zi_demo \
++ umfpack_zl_demo
++
++umfpack_%_demo.c: umfpack_xx_demo.c umfpack_%_demo.sed
++ - sed -f umfpack_$*_demo.sed < umfpack_xx_demo.c > umfpack_$*_demo.c
++
++umfpack_simple_SOURCES = umfpack_simple.c
++umfpack_di_demo_SOURCES = umfpack_di_demo.c
++umfpack_dl_demo_SOURCES = umfpack_dl_demo.c
++umfpack_zi_demo_SOURCES = umfpack_zi_demo.c
++umfpack_zl_demo_SOURCES = umfpack_zl_demo.c
++
++check-local: $(check_PROGRAMS)
++ @total=0; failed=0; \
++ ./umfpack_simple; \
++ if [ "x$$?" = "x0" ]; then \
++ echo "Test umfpack_simple PASSED."; \
++ else \
++ echo "Test umfpack_simple FAILED!!!"; \
++ failed=$$(($$failed + 1)); \
++ fi; \
++ total=$$(($$total + 1)); \
++ for i in *demo; do \
++ echo "--- Testing $$i ---"; \
++ ./$$i$(EXEEXT) > my_$$i.out; \
++ diff $$i.out my_$$i.out; \
++ if [ "x$$?" = "x0" ]; then \
++ echo "Test \`$$i' PASSED."; \
++ else \
++ echo "Test \`$$i' FAILED!!!"; \
++ failed=$$(($$failed + 1)); \
++ fi; \
++ total=$$(($$total + 1)); \
++ done; \
++ if [ $$failed -gt 0 ]; then \
++ echo "*** ERROR: $$failed/$$total tests failed!!!"; \
++ echo "Please check the failures before reporting"; \
++ fi
+diff -Nur UMFPACK.orig/Include/Makefile.am UMFPACK/Include/Makefile.am
+--- UMFPACK.orig/Include/Makefile.am 1970-01-01 01:00:00.000000000 +0100
++++ UMFPACK/Include/Makefile.am 2010-05-14 20:54:52.000000000 +0100
+@@ -0,0 +1,34 @@
++include_HEADERS = \
++ umfpack.h \
++ umfpack_col_to_triplet.h \
++ umfpack_defaults.h \
++ umfpack_free_numeric.h \
++ umfpack_free_symbolic.h \
++ umfpack_get_determinant.h \
++ umfpack_get_lunz.h \
++ umfpack_get_numeric.h \
++ umfpack_get_symbolic.h \
++ umfpack_global.h \
++ umfpack_load_numeric.h \
++ umfpack_load_symbolic.h \
++ umfpack_numeric.h \
++ umfpack_qsymbolic.h \
++ umfpack_report_control.h \
++ umfpack_report_info.h \
++ umfpack_report_matrix.h \
++ umfpack_report_numeric.h \
++ umfpack_report_perm.h \
++ umfpack_report_status.h \
++ umfpack_report_symbolic.h \
++ umfpack_report_triplet.h \
++ umfpack_report_vector.h \
++ umfpack_save_numeric.h \
++ umfpack_save_symbolic.h \
++ umfpack_scale.h \
++ umfpack_solve.h \
++ umfpack_symbolic.h \
++ umfpack_tictoc.h \
++ umfpack_timer.h \
++ umfpack_transpose.h \
++ umfpack_triplet_to_col.h \
++ umfpack_wsolve.h
+diff -Nur UMFPACK.orig/Makefile.am UMFPACK/Makefile.am
+--- UMFPACK.orig/Makefile.am 1970-01-01 01:00:00.000000000 +0100
++++ UMFPACK/Makefile.am 2010-05-14 20:54:52.000000000 +0100
+@@ -0,0 +1,2 @@
++SUBDIRS = Source Include Demo
++EXTRA_DIST = README.txt
+diff -Nur UMFPACK.orig/Source/Makefile.am UMFPACK/Source/Makefile.am
+--- UMFPACK.orig/Source/Makefile.am 1970-01-01 01:00:00.000000000 +0100
++++ UMFPACK/Source/Makefile.am 2010-05-14 20:54:52.000000000 +0100
+@@ -0,0 +1,221 @@
++AM_CPPFLAGS = -I$(top_srcdir)/Include
++lib_LTLIBRARIES = libumfpack.la
++
++# non-user-callable umf_*.[ch] files:
++UMFCH = umf_assemble umf_blas3_update umf_build_tuples umf_create_element \
++ umf_dump umf_extend_front umf_garbage_collection umf_get_memory \
++ umf_init_front umf_kernel umf_kernel_init umf_kernel_wrapup \
++ umf_local_search umf_lsolve umf_ltsolve umf_mem_alloc_element \
++ umf_mem_alloc_head_block umf_mem_alloc_tail_block \
++ umf_mem_free_tail_block umf_mem_init_memoryspace \
++ umf_report_vector umf_row_search umf_scale_column \
++ umf_set_stats umf_solve umf_symbolic_usage umf_transpose \
++ umf_tuple_lengths umf_usolve umf_utsolve umf_valid_numeric \
++ umf_valid_symbolic umf_grow_front umf_start_front \
++ umf_store_lu umf_scale
++
++# non-user-callable umf_*.[ch] files, int/UF_long versions only (no real/complex):
++UMFINT = umf_analyze umf_apply_order umf_colamd umf_cholmod umf_free umf_fsize \
++ umf_is_permutation umf_malloc umf_realloc umf_report_perm \
++ umf_singletons
++
++# non-user-callable, created from umf_ltsolve.c, umf_utsolve.c,
++# umf_triplet.c, and umf_assemble.c , with int/UF_long and real/complex versions:
++UMF_CREATED = umf_lhsolve umf_uhsolve umf_triplet_map_nox \
++ umf_triplet_nomap_x umf_triplet_nomap_nox umf_triplet_map_x \
++ umf_assemble_fixq umf_store_lu_drop
++
++# non-user-callable, int/UF_long and real/complex versions:
++UMF = $(UMF_CREATED) $(UMFCH)
++
++# user-callable umfpack_*.[ch] files (int/UF_long and real/complex):
++UMFPACK = umfpack_col_to_triplet umfpack_defaults umfpack_free_numeric \
++ umfpack_free_symbolic umfpack_get_numeric umfpack_get_lunz \
++ umfpack_get_symbolic umfpack_get_determinant umfpack_numeric \
++ umfpack_qsymbolic umfpack_report_control umfpack_report_info \
++ umfpack_report_matrix umfpack_report_numeric umfpack_report_perm \
++ umfpack_report_status umfpack_report_symbolic umfpack_report_triplet \
++ umfpack_report_vector umfpack_solve umfpack_symbolic \
++ umfpack_transpose umfpack_triplet_to_col umfpack_scale \
++ umfpack_load_numeric umfpack_save_numeric \
++ umfpack_load_symbolic umfpack_save_symbolic
++
++# user-callable, created from umfpack_solve.c (umfpack_wsolve.h exists, though):
++# with int/UF_long and real/complex versions:
++UMFPACKW = umfpack_wsolve
++
++USER = $(UMFPACKW) $(UMFPACK)
++
++# user-callable, only one version for int/UF_long, real/complex, *.[ch] files:
++GENERIC = umfpack_timer umfpack_tictoc umfpack_global
++
++
++#-------------------------------------------------------------------------------
++# object files for each version
++#-------------------------------------------------------------------------------
++
++DI = $(addsuffix .lo, $(subst umf_,umf_di_,$(UMF)) $(subst umfpack_,umfpack_di_,$(USER)))
++DL = $(addsuffix .lo, $(subst umf_,umf_dl_,$(UMF)) $(subst umfpack_,umfpack_dl_,$(USER)))
++ZI = $(addsuffix .lo, $(subst umf_,umf_zi_,$(UMF)) $(subst umfpack_,umfpack_zi_,$(USER)))
++ZL = $(addsuffix .lo, $(subst umf_,umf_zl_,$(UMF)) $(subst umfpack_,umfpack_zl_,$(USER)))
++II = $(addsuffix .lo, $(subst umf_,umf_i_,$(UMFINT)))
++LL = $(addsuffix .lo, $(subst umf_,umf_l_,$(UMFINT)))
++GN = $(addsuffix .lo, $(subst umfpack_,umfpack_gn_,$(GENERIC)))
++
++#-------------------------------------------------------------------------------
++# compile each int and UF_long routine (with no real/complex version)
++#-------------------------------------------------------------------------------
++
++umf_i_%.lo: umf_%.c $(INC)
++ $(LTCOMPILE) -DDINT -c $< -o $@
++
++umf_l_%.lo: umf_%.c $(INC)
++ $(LTCOMPILE) -DDLONG -c $< -o $@
++
++#-------------------------------------------------------------------------------
++# compile each routine in the DI version
++#-------------------------------------------------------------------------------
++
++umf_di_%.lo: umf_%.c $(INC)
++ $(LTCOMPILE) -DDINT -c $< -o $@
++
++umf_di_%hsolve.lo: umf_%tsolve.c $(INC)
++ $(LTCOMPILE) -DDINT -DCONJUGATE_SOLVE -c $< -o $@
++
++umf_di_triplet_map_x.lo: umf_triplet.c $(INC)
++ $(LTCOMPILE) -DDINT -DDO_MAP -DDO_VALUES -c $< -o $@
++
++umf_di_triplet_map_nox.lo: umf_triplet.c $(INC)
++ $(LTCOMPILE) -DDINT -DDO_MAP -c $< -o $@
++
++umf_di_triplet_nomap_x.lo: umf_triplet.c $(INC)
++ $(LTCOMPILE) -DDINT -DDO_VALUES -c $< -o $@
++
++umf_di_triplet_nomap_nox.lo: umf_triplet.c $(INC)
++ $(LTCOMPILE) -DDINT -c $< -o $@
++
++umf_di_assemble_fixq.lo: umf_assemble.c $(INC)
++ $(LTCOMPILE) -DDINT -DFIXQ -c $< -o $@
++
++umf_di_store_lu_drop.lo: umf_store_lu.c $(INC)
++ $(LTCOMPILE) -DDINT -DDROP -c $< -o $@
++
++umfpack_di_wsolve.lo: umfpack_solve.c $(INC)
++ $(LTCOMPILE) -DDINT -DWSOLVE -c $< -o $@
++
++umfpack_di_%.lo: umfpack_%.c $(INC)
++ $(LTCOMPILE) -DDINT -c $< -o $@
++
++#-------------------------------------------------------------------------------
++# compile each routine in the DL version
++#-------------------------------------------------------------------------------
++
++umf_dl_%.lo: umf_%.c $(INC)
++ $(LTCOMPILE) -DDLONG -c $< -o $@
++
++umf_dl_%hsolve.lo: umf_%tsolve.c $(INC)
++ $(LTCOMPILE) -DDLONG -DCONJUGATE_SOLVE -c $< -o $@
++
++umf_dl_triplet_map_x.lo: umf_triplet.c $(INC)
++ $(LTCOMPILE) -DDLONG -DDO_MAP -DDO_VALUES -c $< -o $@
++
++umf_dl_triplet_map_nox.lo: umf_triplet.c $(INC)
++ $(LTCOMPILE) -DDLONG -DDO_MAP -c $< -o $@
++
++umf_dl_triplet_nomap_x.lo: umf_triplet.c $(INC)
++ $(LTCOMPILE) -DDLONG -DDO_VALUES -c $< -o $@
++
++umf_dl_triplet_nomap_nox.lo: umf_triplet.c $(INC)
++ $(LTCOMPILE) -DDLONG -c $< -o $@
++
++umf_dl_assemble_fixq.lo: umf_assemble.c $(INC)
++ $(LTCOMPILE) -DDLONG -DFIXQ -c $< -o $@
++
++umf_dl_store_lu_drop.lo: umf_store_lu.c $(INC)
++ $(LTCOMPILE) -DDLONG -DDROP -c $< -o $@
++
++umfpack_dl_wsolve.lo: umfpack_solve.c $(INC)
++ $(LTCOMPILE) -DDLONG -DWSOLVE -c $< -o $@
++
++umfpack_dl_%.lo: umfpack_%.c $(INC)
++ $(LTCOMPILE) -DDLONG -c $< -o $@
++
++#-------------------------------------------------------------------------------
++# compile each routine in the ZI version
++#-------------------------------------------------------------------------------
++
++umf_zi_%.lo: umf_%.c $(INC)
++ $(LTCOMPILE) -DZINT -c $< -o $@
++
++umf_zi_%hsolve.lo: umf_%tsolve.c $(INC)
++ $(LTCOMPILE) -DZINT -DCONJUGATE_SOLVE -c $< -o $@
++
++umf_zi_triplet_map_x.lo: umf_triplet.c $(INC)
++ $(LTCOMPILE) -DZINT -DDO_MAP -DDO_VALUES -c $< -o $@
++
++umf_zi_triplet_map_nox.lo: umf_triplet.c $(INC)
++ $(LTCOMPILE) -DZINT -DDO_MAP -c $< -o $@
++
++umf_zi_triplet_nomap_x.lo: umf_triplet.c $(INC)
++ $(LTCOMPILE) -DZINT -DDO_VALUES -c $< -o $@
++
++umf_zi_triplet_nomap_nox.lo: umf_triplet.c $(INC)
++ $(LTCOMPILE) -DZINT -c $< -o $@
++
++umf_zi_assemble_fixq.lo: umf_assemble.c $(INC)
++ $(LTCOMPILE) -DZINT -DFIXQ -c $< -o $@
++
++umf_zi_store_lu_drop.lo: umf_store_lu.c $(INC)
++ $(LTCOMPILE) -DZINT -DDROP -c $< -o $@
++
++umfpack_zi_wsolve.lo: umfpack_solve.c $(INC)
++ $(LTCOMPILE) -DZINT -DWSOLVE -c $< -o $@
++
++umfpack_zi_%.lo: umfpack_%.c $(INC)
++ $(LTCOMPILE) -DZINT -c $< -o $@
++
++#-------------------------------------------------------------------------------
++# compile each routine in the ZL version
++#-------------------------------------------------------------------------------
++
++umf_zl_%.lo: umf_%.c $(INC)
++ $(LTCOMPILE) -DZLONG -c $< -o $@
++
++umf_zl_%hsolve.lo: umf_%tsolve.c $(INC)
++ $(LTCOMPILE) -DZLONG -DCONJUGATE_SOLVE -c $< -o $@
++
++umf_zl_triplet_map_x.lo: umf_triplet.c $(INC)
++ $(LTCOMPILE) -DZLONG -DDO_MAP -DDO_VALUES -c $< -o $@
++
++umf_zl_triplet_map_nox.lo: umf_triplet.c $(INC)
++ $(LTCOMPILE) -DZLONG -DDO_MAP -c $< -o $@
++
++umf_zl_triplet_nomap_x.lo: umf_triplet.c $(INC)
++ $(LTCOMPILE) -DZLONG -DDO_VALUES -c $< -o $@
++
++umf_zl_triplet_nomap_nox.lo: umf_triplet.c $(INC)
++ $(LTCOMPILE) -DZLONG -c $< -o $@
++
++umf_zl_assemble_fixq.lo: umf_assemble.c $(INC)
++ $(LTCOMPILE) -DZLONG -DFIXQ -c $< -o $@
++
++umf_zl_store_lu_drop.lo: umf_store_lu.c $(INC)
++ $(LTCOMPILE) -DZLONG -DDROP -c $< -o $@
++
++umfpack_zl_wsolve.lo: umfpack_solve.c $(INC)
++ $(LTCOMPILE) -DZLONG -DWSOLVE -c $< -o $@
++
++umfpack_zl_%.lo: umfpack_%.c $(INC)
++ $(LTCOMPILE) -DZLONG -c $< -o $@
++
++#-------------------------------------------------------------------------------
++# Create the generic routines (GN) using a generic rule
++#-------------------------------------------------------------------------------
++
++umfpack_gn_%.lo: umfpack_%.c $(INC)
++ $(LTCOMPILE) -c $< -o $@
++
++
++libumfpack_la_SOURCES =
++libumfpack_la_LIBADD = $(BLAS_LIBS) -lm \
++ $(II) $(LL) $(GN) $(DI) $(DL) $(ZI) $(ZL)
diff --git a/sci-libs/umfpack/metadata.xml b/sci-libs/umfpack/metadata.xml
index 05599ed9de7d..77a1528629ce 100644
--- a/sci-libs/umfpack/metadata.xml
+++ b/sci-libs/umfpack/metadata.xml
@@ -8,4 +8,7 @@
Includes a C-callable interface, and a Fortran-callable interface.
MATLAB routines are not included in the Gentoo package.
</longdescription>
+<use>
+ <flag name='metis'>Use METIS via CHOLMOD(<pkg>sci-libs/cholmod</pkg>) for partitioning</flag>
+</use>
</pkgmetadata>
diff --git a/sci-libs/umfpack/umfpack-5.5.0.ebuild b/sci-libs/umfpack/umfpack-5.5.0.ebuild
new file mode 100644
index 000000000000..185627a093c7
--- /dev/null
+++ b/sci-libs/umfpack/umfpack-5.5.0.ebuild
@@ -0,0 +1,46 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sci-libs/umfpack/umfpack-5.5.0.ebuild,v 1.1 2010/05/14 21:46:31 bicatali Exp $
+
+EAPI=2
+inherit autotools eutils
+
+MY_PN=UMFPACK
+
+DESCRIPTION="Unsymmetric multifrontal sparse LU factorization library"
+HOMEPAGE="http://www.cise.ufl.edu/research/sparse/umfpack"
+SRC_URI="http://www.cise.ufl.edu/research/sparse/${PN}/${MY_PN}-${PV}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~hppa ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux ~x86-macos"
+IUSE="doc metis"
+RDEPEND="virtual/blas
+ sci-libs/amd
+ metis? ( sci-libs/cholmod[metis] )"
+DEPEND="${RDEPEND}
+ dev-util/pkgconfig"
+
+S="${WORKDIR}/${MY_PN}"
+
+src_prepare() {
+ cd "${WORKDIR}"
+ epatch "${FILESDIR}"/${PN}-5.5.0-autotools.patch
+ cd "${S}"
+ eautoreconf
+}
+
+src_configure() {
+ econf \
+ --with-blas="$(pkg-config --libs blas)" \
+ $(use_with metis cholmod)
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die "emake install failed"
+ dodoc README.txt Doc/ChangeLog || die "dodoc failed"
+ if use doc; then
+ insinto /usr/share/doc/${PF}
+ doins Doc/*.pdf || die "doins failed"
+ fi
+}