blob: 8a7055d9c4541a650572e4590d9c95c7434bf6ca (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sci-libs/scotch/scotch-5.1.11.ebuild,v 1.3 2011/06/26 10:08:23 jlec Exp $
EAPI=4
inherit eutils toolchain-funcs versionator
# use esmumps version to allow linking with mumps
MYP="${PN}_${PV}_esmumps"
# download id on gforge changes every goddamn release
DID=28044
DESCRIPTION="Software for graph, mesh and hypergraph partitioning"
HOMEPAGE="http://www.labri.u-bordeaux.fr/perso/pelegrin/scotch/"
SRC_URI="http://gforge.inria.fr/frs/download.php/${DID}/${MYP}.tgz"
LICENSE="CeCILL-2"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="doc examples mpi static-libs"
RDEPEND="
sys-libs/zlib
mpi? ( virtual/mpi )"
DEPEND="${RDEPEND}
sys-devel/bison"
S="${WORKDIR}/${MYP}/src"
make_shared_lib() {
local soname=$(basename "${1%.a}").so.$(get_major_version)
einfo "Making ${soname}"
${2:-$(tc-getCC)} ${LDFLAGS} \
-shared -Wl,-soname="${soname}" \
-Wl,--whole-archive "${1}" -Wl,--no-whole-archive \
-lz -lm -lrt -o $(dirname "${1}")/"${soname}" || return 1
}
src_prepare() {
epatch \
"${FILESDIR}"/metis-header.patch \
"${FILESDIR}"/respect-ldflags.patch
sed \
-e "s/@CFLAGS@/${CFLAGS}/" \
-e "s/@CC@/$(tc-getCC)/" \
-e "s/@AR@/$(tc-getAR)/" \
-e "s/@RANLIB@/$(tc-getRANLIB)/" \
"${FILESDIR}"/Makefile.inc.in > Makefile.inc || die
}
src_compile() {
emake PICFLAGS=-fPIC
local lib
for lib in $(find . -name lib\*.a); do
make_shared_lib ${lib} || die "shared ${lib} failed"
done
if use mpi; then
emake PICFLAGS=-fPIC ptscotch
for lib in $(find . -name libpt\*.a); do
make_shared_lib ${lib} mpicc || die "shared ${lib} failed"
done
fi
if use static-libs; then
emake clean
emake
use mpi && emake ptscotch
fi
}
src_install() {
cd ..
local l b m
for l in $(find . -name \*.so.\*); do
dolib.so ${l}
dosym $(basename ${l}) /usr/$(get_libdir)/$(basename ${l%.*})
done
use static-libs && dolib.a $(find . -name \*.a)
pushd bin > /dev/null
for b in *; do
newbin ${b} scotch_${b}
done
popd
pushd man/man1 > /dev/null
for m in *; do
newman ${m} scotch_${m}
done
popd > /dev/null
insinto /usr/include/scotch
doins include/*
dodoc README.txt
use doc && dodoc doc/*.pdf
if use examples; then
insinto /usr/share/doc/${PF}/examples
doins -r examples/* tgt grf
fi
}
|