| 3 |
3 |
|
| 4 |
4 |
EAPI=8
|
| 5 |
5 |
|
| 6 |
|
inherit toolchain-funcs
|
|
6 |
inherit cmake toolchain-funcs
|
| 7 |
7 |
|
| 8 |
8 |
MY_PN=SuperLU_MT
|
| 9 |
9 |
SOVERSION=$(ver_cut 1)
|
| 10 |
10 |
|
| 11 |
11 |
DESCRIPTION="Multithreaded sparse LU factorization library"
|
| 12 |
12 |
HOMEPAGE="https://portal.nersc.gov/project/sparse/superlu/"
|
| 13 |
|
SRC_URI="https://portal.nersc.gov/project/sparse/superlu/${PN}_${PV}.tar.gz"
|
|
13 |
SRC_URI="https://github.com/xiaoyeli/${PN}/archive/refs/tags/v${PV}.tar.gz
|
|
14 |
-> ${P}.tar.gz"
|
| 14 |
15 |
|
| 15 |
16 |
LICENSE="BSD"
|
| 16 |
17 |
SLOT="0/${SOVERSION}"
|
| 17 |
|
KEYWORDS="amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
|
| 18 |
|
IUSE="doc examples int64 openmp static-libs test threads"
|
|
18 |
KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
|
|
19 |
IUSE="doc examples int64 openmp test threads"
|
| 19 |
20 |
RESTRICT="!test? ( test )"
|
| 20 |
21 |
REQUIRED_USE="|| ( openmp threads )"
|
| 21 |
22 |
|
| ... | ... | |
| 24 |
25 |
BDEPEND="virtual/pkgconfig
|
| 25 |
26 |
test? ( app-shells/tcsh )"
|
| 26 |
27 |
|
| 27 |
|
S="${WORKDIR}/${MY_PN}_${PV}"
|
| 28 |
|
|
| 29 |
28 |
PATCHES=(
|
| 30 |
|
"${FILESDIR}"/${PN}-3.1-duplicate-symbols.patch
|
| 31 |
|
"${FILESDIR}"/${PN}-3.1-fix-predefs.patch
|
|
29 |
"${FILESDIR}"/${P}-gentoo.patch
|
| 32 |
30 |
"${FILESDIR}"/${P}-proto.patch
|
| 33 |
|
#"${FILESDIR}"/${P}-prototype.patch
|
|
31 |
"${FILESDIR}"/${P}-examples.patch
|
| 34 |
32 |
)
|
| 35 |
33 |
|
| 36 |
34 |
pkg_pretend() {
|
| ... | ... | |
| 41 |
39 |
[[ ${MERGE_TYPE} != binary ]] && use openmp && ! use threads && tc-check-openmp
|
| 42 |
40 |
}
|
| 43 |
41 |
|
| 44 |
|
src_prepare() {
|
| 45 |
|
default
|
| 46 |
|
cat <<-EOF > make.inc
|
| 47 |
|
CC=$(tc-getCC)
|
| 48 |
|
LOADER=$(tc-getCC)
|
| 49 |
|
ARCH=$(tc-getAR)
|
| 50 |
|
RANLIB=$(tc-getRANLIB)
|
| 51 |
|
PREDEFS=${CPPFLAGS} -DUSE_VENDOR_BLAS -DPRNTlevel=0 -DDEBUGlevel=0 $(use int64 && echo -D_LONGINT)
|
| 52 |
|
CDEFS=-DAdd_
|
| 53 |
|
CFLAGS=${CFLAGS} ${CTHREADS} \$(PIC)
|
| 54 |
|
BLASLIB=$($(tc-getPKG_CONFIG) --libs blas)
|
| 55 |
|
MATHLIB=-lm
|
| 56 |
|
NOOPTS=-O0 \$(PIC)
|
| 57 |
|
ARCHFLAGS=cr
|
| 58 |
|
LOADOPTS=${LDFLAGS} ${LDTHREADS}
|
| 59 |
|
SUPERLULIB=lib${PN}.a
|
| 60 |
|
TMGLIB=libtmglib.a
|
| 61 |
|
EOF
|
| 62 |
|
SONAME=lib${PN}.so.${SOVERSION}
|
| 63 |
|
sed -e "s|../SRC|${EPREFIX}/usr/include/${PN}|" \
|
| 64 |
|
-e '/:.*$(SUPERLULIB)/s|../lib/$(SUPERLULIB)||g' \
|
| 65 |
|
-e 's|../lib/$(SUPERLULIB)|-lsuperlu_mt|g' \
|
| 66 |
|
-i EXAMPLE/Makefile || die
|
| 67 |
|
|
|
42 |
src_configure() {
|
|
43 |
local mycmakeargs=(
|
|
44 |
-DBUILD_SHARED_LIBS=ON
|
|
45 |
-DLONGINT=$(usex int64)
|
|
46 |
-Denable_examples=$(usex examples)
|
|
47 |
-Denable_tests=$(usex test)
|
|
48 |
)
|
| 68 |
49 |
if use openmp && ! use threads; then
|
| 69 |
|
CTHREADS="-D__OPENMP"
|
| 70 |
|
LDTHREADS="-fopenmp"
|
|
50 |
mycmakeargs+=( -DPLAT=_OPENMP )
|
| 71 |
51 |
else
|
| 72 |
|
CTHREADS="-D__PTHREAD"
|
| 73 |
|
LDTHREADS="-pthread"
|
|
52 |
mycmakeargs+=( -DPLAT=_PTHREAD )
|
| 74 |
53 |
fi
|
| 75 |
|
}
|
| 76 |
|
|
| 77 |
|
src_compile() {
|
| 78 |
|
# shared library
|
| 79 |
|
emake PIC="-fPIC" \
|
| 80 |
|
ARCH="echo" \
|
| 81 |
|
ARCHFLAGS="" \
|
| 82 |
|
RANLIB="echo" \
|
| 83 |
|
superlulib
|
| 84 |
|
$(tc-getCC) ${LDFLAGS} ${LDTHREADS} -shared -Wl,-soname=${SONAME} SRC/*.o \
|
| 85 |
|
$($(tc-getPKG_CONFIG) --libs blas) -lm -o lib/${SONAME} || die
|
| 86 |
|
ln -s ${SONAME} lib/libsuperlu_mt.so || die
|
| 87 |
|
|
| 88 |
|
use static-libs && rm -f SRC/*.o && \
|
| 89 |
|
emake PIC="" superlulib
|
| 90 |
|
}
|
| 91 |
54 |
|
| 92 |
|
src_test() {
|
| 93 |
|
emake -j1 tmglib
|
| 94 |
|
LD_LIBRARY_PATH="${S}/lib:${LD_LIBRARY_PATH}" \
|
| 95 |
|
emake SUPERLULIB="${SONAME}" testing
|
|
55 |
cmake_src_configure
|
| 96 |
56 |
}
|
| 97 |
57 |
|
| 98 |
58 |
src_install() {
|
| 99 |
|
dolib.so lib/*so*
|
| 100 |
|
use static-libs && dolib.a lib/*.a
|
| 101 |
|
insinto /usr/include/${PN}
|
| 102 |
|
doins SRC/*h
|
| 103 |
|
dodoc README
|
|
59 |
cmake_src_install
|
| 104 |
60 |
use doc && dodoc DOC/ug.pdf
|
| 105 |
61 |
if use examples; then
|
| 106 |
62 |
docinto /examples
|
| 107 |
|
dodoc -r EXAMPLE/* make.inc
|
|
63 |
dodoc -r EXAMPLE/*
|
| 108 |
64 |
fi
|
| 109 |
65 |
}
|