1 |
1 |
# Copyright 1999-2023 Gentoo Authors
|
2 |
2 |
# Distributed under the terms of the GNU General Public License v2
|
3 |
3 |
|
4 |
|
EAPI=7
|
|
4 |
EAPI=8
|
5 |
5 |
|
6 |
6 |
inherit cmake
|
7 |
7 |
|
8 |
8 |
DESCRIPTION="A package for unstructured serial graph partitioning"
|
9 |
|
HOMEPAGE="http://glaros.dtc.umn.edu/gkhome/metis/metis/overview"
|
10 |
|
SRC_URI="http://glaros.dtc.umn.edu/gkhome/fetch/sw/${PN}/${P}.tar.gz"
|
|
9 |
HOMEPAGE="https://github.com/KarypisLab/METIS"
|
|
10 |
SRC_URI="https://github.com/KarypisLab/METIS/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
|
|
11 |
S="${WORKDIR}/METIS-${PV}"
|
11 |
12 |
|
12 |
13 |
LICENSE="Apache-2.0"
|
13 |
14 |
SLOT="0"
|
14 |
|
KEYWORDS="amd64 arm arm64 ~hppa ~ia64 ~loong ~mips ~ppc ppc64 ~riscv ~s390 sparc ~x86 ~amd64-linux ~x86-linux"
|
15 |
|
IUSE="doc double-precision examples int64 openmp"
|
16 |
|
|
17 |
|
RDEPEND="!<sci-libs/parmetis-4.0.3-r2"
|
|
15 |
KEYWORDS="~amd64 ~arm ~arm64 ~ia64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~arm64-macos ~x64-macos"
|
|
16 |
IUSE="double-precision examples int64 openmp"
|
18 |
17 |
|
19 |
18 |
PATCHES=(
|
20 |
|
"${FILESDIR}"/${P}-shared-GKlib.patch
|
21 |
19 |
"${FILESDIR}"/${P}-multilib.patch
|
22 |
|
"${FILESDIR}"/${P}-remove-GKlib-O3.patch
|
|
20 |
"${FILESDIR}"/${P}-respect-user-flags.patch
|
|
21 |
# https://github.com/KarypisLab/METIS/pull/52 Bug 905822
|
|
22 |
"${FILESDIR}"/${P}-add-gklib-as-required.patch
|
23 |
23 |
)
|
24 |
24 |
|
|
25 |
DEPEND="sci-libs/gklib"
|
|
26 |
RDEPEND="${DEPEND}"
|
|
27 |
|
25 |
28 |
src_prepare() {
|
|
29 |
local idxwidth realwidth
|
|
30 |
|
26 |
31 |
if use int64; then
|
27 |
|
sed -i -e '/^#define IDXTYPEWIDTH/s/32/64/' include/metis.h || die
|
|
32 |
idxwidth="#define IDXTYPEWIDTH 64"
|
|
33 |
else
|
|
34 |
idxwidth="#define IDXTYPEWIDTH 32"
|
28 |
35 |
fi
|
29 |
36 |
|
30 |
37 |
if use double-precision; then
|
31 |
|
sed -i -e '/^#define REALTYPEWIDTH/s/32/64/' include/metis.h || die
|
|
38 |
realwidth="#define REALTYPEWIDTH 64"
|
|
39 |
else
|
|
40 |
realwidth="#define REALTYPEWIDTH 32"
|
32 |
41 |
fi
|
33 |
42 |
|
34 |
43 |
cmake_src_prepare
|
|
44 |
|
|
45 |
# From Makefile
|
|
46 |
mkdir -p build/xinclude || die
|
|
47 |
echo ${idxwidth} > build/xinclude/metis.h || die
|
|
48 |
echo ${realwidth} >> build/xinclude/metis.h || die
|
|
49 |
cat include/metis.h >> build/xinclude/metis.h || die
|
|
50 |
cp include/CMakeLists.txt build/xinclude || die
|
35 |
51 |
}
|
36 |
52 |
|
37 |
53 |
src_configure() {
|
38 |
54 |
local mycmakeargs=(
|
39 |
|
-DGKLIB_PATH="${S}"/GKlib
|
40 |
55 |
-DSHARED=yes
|
41 |
56 |
-DOPENMP=$(usex openmp)
|
42 |
57 |
)
|
... | ... | |
56 |
71 |
|
57 |
72 |
src_install() {
|
58 |
73 |
cmake_src_install
|
59 |
|
use doc && dodoc manual/manual.pdf
|
|
74 |
dodoc manual/manual.pdf
|
60 |
75 |
if use examples; then
|
61 |
76 |
docinto examples
|
62 |
77 |
dodoc -r programs graphs
|
... | ... | |
71 |
86 |
Name: METIS
|
72 |
87 |
Description: Software for partioning unstructured graphes and meshes
|
73 |
88 |
Version: ${PV}
|
74 |
|
Cflags: -I\${includedir}/metis
|
75 |
|
Libs: -L\${libdir} -lmetis
|
|
89 |
Cflags: -I\${includedir}
|
|
90 |
Libs: -L\${libdir} -lmetis -lGKlib
|
76 |
91 |
EOF
|
77 |
92 |
insinto /usr/$(get_libdir)/pkgconfig
|
78 |
93 |
doins "${T}"/metis.pc
|