summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSébastien Fabbro <bicatali@gentoo.org>2010-12-11 19:54:42 +0000
committerSébastien Fabbro <bicatali@gentoo.org>2010-12-11 19:54:42 +0000
commitbe029d47c6c2a82c6e6afbbd5878a15cd2cc67a8 (patch)
tree080ded457581e7e9dd54206d68a8014888b97eb2 /sci-libs/atlas
parentadded blacs and scalapack eselect modules (diff)
downloadbicatali-be029d47c6c2a82c6e6afbbd5878a15cd2cc67a8.tar.gz
bicatali-be029d47c6c2a82c6e6afbbd5878a15cd2cc67a8.tar.bz2
bicatali-be029d47c6c2a82c6e6afbbd5878a15cd2cc67a8.zip
fix renaming of collision libs
Diffstat (limited to 'sci-libs/atlas')
-rw-r--r--sci-libs/atlas/Manifest2
-rw-r--r--sci-libs/atlas/atlas-3.9.32.ebuild89
2 files changed, 54 insertions, 37 deletions
diff --git a/sci-libs/atlas/Manifest b/sci-libs/atlas/Manifest
index 304c110..e8c829e 100644
--- a/sci-libs/atlas/Manifest
+++ b/sci-libs/atlas/Manifest
@@ -2,6 +2,6 @@ DIST atlas3.8.3.tar.bz2 2527756 RMD160 0425e630d9d0c5b7aae81427a41b7eaa18447e90
DIST atlas3.9.32.tar.bz2 5079409 RMD160 a6f7dbd1ee13c9b3e3b4e9e28b706d037f19fe99 SHA1 77a448ebe779745ee916dcd22922255c7dc340db SHA256 8aa87f1d72802de691d4366c3b579644c2073a2ace81959d6dff6d6717b1c8a9
DIST lapack-3.3.0.tgz 6064824 RMD160 cc72e7c93ab13464fd892d684b00b910cbbd3b3e SHA1 4f0b103da52110e7f60d1d7676727103aca9785e SHA256 bc531761287156e17476395c42664a15373723f54a6f80f192cda47771ec1225
EBUILD atlas-3.8.3.ebuild 6114 RMD160 9418ed1ff693a46614aa1b80d79279ac9f84ccd7 SHA1 66c8d633124db4cb9521851fe9105d14639e38c0 SHA256 c80cb45fd453852dc40bacde75fa871960fbc2e62c9b768f01e101280133e5fe
-EBUILD atlas-3.9.32.ebuild 5318 RMD160 16615a4ceac90d6eaca5fbd10d3293963c40457e SHA1 ad7d621a183ff927e4550414746a90ce3fedfe2a SHA256 a8399eab050748effe6360bc142efe1a95d36ffb64883a941617c7b8be4edd06
+EBUILD atlas-3.9.32.ebuild 6004 RMD160 31aa15493f190c89ddf20b3f549cec9d83c8d76b SHA1 909619f74a5461de568f03068bc7eb929617c0a2 SHA256 b20ecb7f59cb5a3e879b98ed95f69a94d0aaa3aa92b7ad0d70736cfe9bf31619
MISC ChangeLog 431 RMD160 5029ae5bb2dbcffadeb2485dc2d661e16c4bb7c8 SHA1 48b805b587c2d16f4994ab0a94f1199c9ca74528 SHA256 27c95c5cd6c008e15c7e0dae1b3c6acee327c2b17de8646cee33d3efd66331bc
MISC metadata.xml 726 RMD160 e43f5ea9c594bbe2174f6640bbfdccd8b17d4a68 SHA1 0ab8c05e7925b4716d8c94acd952bf3ab85165cb SHA256 27ef4eee7e645ad923644830d057db45d32342ad250ad903ff10915a9ca068fd
diff --git a/sci-libs/atlas/atlas-3.9.32.ebuild b/sci-libs/atlas/atlas-3.9.32.ebuild
index 2b2f391..07f97ce 100644
--- a/sci-libs/atlas/atlas-3.9.32.ebuild
+++ b/sci-libs/atlas/atlas-3.9.32.ebuild
@@ -3,7 +3,7 @@
# $Header: $
EAPI=3
-inherit eutils toolchain-funcs multilib
+inherit eutils toolchain-funcs multilib versionator
LAPACKP=lapack-3.3.0
@@ -25,6 +25,15 @@ DEPEND="${RDEPEND}
S="${WORKDIR}/ATLAS"
+make_shared_lib() {
+ local soname=$(basename "${1%.a}").so.${3:-$(get_major_version)}
+ einfo "Making ${soname}"
+ ${2} ${LDFLAGS} \
+ -shared -Wl,-soname="${soname}" \
+ -Wl,--whole-archive "${1}" -Wl,--no-whole-archive \
+ -o $(dirname "${1}")/"${soname}" || return 1
+}
+
pkg_setup() {
if [[ -n $(type -P cpufreq-info) ]]; then
[[ -z $(cpufreq-info -d) ]] && return
@@ -102,7 +111,7 @@ src_configure() {
fi
mkdir "${S}_build_shared" && cd "${S}_build_shared"
- myconf+=( "--shared" )
+ myconf+=( "-Fa alg -fPIC" )
"${S}"/configure ${myconf[@]} || die "configure shared failed"
}
@@ -111,13 +120,28 @@ src_compile() {
if use static-libs; then
cd "${S}_build_static"
emake -j1 build || die "emake static failed"
+ cd lib
+ emake libclapack.a || die
+ # rename to avoid collisions
+ mv lib{,a}cblas.a && [[ -e liblapack.a ]] && mv lib{,a}lapack.a
fi
cd "${S}_build_shared"
emake -j1 build || die "emake static with PIC failed"
cd lib
- local alibs="shared cshared"
- [[ -e libptcblas.a ]] && alibs="${alibs} ptshared ptcshared"
- emake ${alibs} || die "emake shared libs failed"
+ emake libclapack.a || die
+ # rename to avoid collisions
+ mv lib{,a}cblas.a && [[ -e liblapack.a ]] && mv lib{,a}lapack.a
+ make_shared_lib libatlas.a $(tc-getCC) || die
+ make_shared_lib libacblas.a $(tc-getCC) 1 || die
+ make_shared_lib libclapack.a $(tc-getCC) || die
+ if use fortran; then
+ make_shared_lib libf77blas.a $(tc-getFC) 1 || die
+ use lapack && make_shared_lib libalapack.a $(tc-getFC) 3 || die
+ fi
+ if [[ -e libptcblas.a ]]; then
+ make_shared_lib libptcblas.a $(tc-getCC) 1 || die
+ use fortran && make_shared_lib libptf77blas.a $(tc-getCC) 1 || die
+ fi
}
src_test() {
@@ -126,65 +150,58 @@ src_test() {
emake -j1 time || die "emake time failed"
}
-# atlas_install <blas|cblas|lapack> <lib>
-atlas_install() {
- local iname=${1} ilib=${2}
- if [[ ${iname} == ${ilib} ]]; then
- # rename to avoid conflict with linked configurations
- mv "${ED}"/usr/$(get_libdir)/lib{,a}${ilib}.so
- use static-libs && "${ED}"/usr/$(get_libdir)/lib{,a}${ilib}.a
- ilib=a${ilib}
- fi
- local prof=${PN}-${iname} ptlibs=
- if [[ ${ilib:0:2} == pt ]]; then
- prof=${prof}-threads
- ptlibs="-lthreads"
- fi
+# atlas_make_profile <blas|cblas|lapack> <lib>
+atlas_make_profile() {
+ local name=${1}; shift
+ local prof=${PN}-${name}
+ [[ ${libs} =~ pt ]] && prof=${prof}-threads
cat <<-EOF > ${prof}.pc
prefix=${EPREFIX}/usr
libdir=\${prefix}/$(get_libdir)
includedir=\${prefix}/include
Name: ${prof}
- Description: ${DESCRIPTION} ${iname} implementation
+ Description: ${DESCRIPTION} ${name} implementation
Version: ${PV}
URL: ${HOMEPAGE}
- Libs: -L\${libdir} -latlas -l${ilib} ${ptlibs}
+ Libs: -L\${libdir} $@ -latlas
Private: -lm
Cflags: -I\${includedir}/${PN}
- $([[ ${1} == lapack ]] && echo "Requires: blas")
+ $([[ ${1} == lapack ]] && echo "Requires: cblas blas")
EOF
insinto /usr/$(get_libdir)/pkgconfig
doins ${prof}.pc || die
- echo > eselect.${iname}.${prof} \
- "${prof}.pc ${EPREFIX}/usr/$(get_libdir)/pkgconfig/${iname}.pc"
- if [[ ${iname} == cblas ]]; then
- echo >> eselect.${iname}.${prof} \
+ echo > eselect.${name}.${prof} \
+ "${prof}.pc ${EPREFIX}/usr/$(get_libdir)/pkgconfig/${name}.pc"
+ if [[ ${name} == cblas ]]; then
+ echo >> eselect.${name}.${prof} \
"${PN}/cblas.h ${EPREFIX}/usr/include/cblas.h"
fi
- eselect ${iname} add $(get_libdir) eselect.${iname}.${prof} ${prof}
+ eselect ${name} add $(get_libdir) eselect.${name}.${prof} ${prof}
}
src_install() {
# do a loop to make sure we install the same in shared/static
local l
- for l in "${S}_build_shared"/lib/lib*.so; do
- dolib.so "${l}" || die
+ for l in "${S}_build_shared"/lib/lib*.so.*; do
if use static-libs; then
dolib.a "${l/_shared/_static}".a || die
fi
+ dolib.so "${l}" || die
+ l=$(basename "${l}")
+ dosym ${l} /usr/$(get_libdir)/${l%.*}
done
- atlas_install cblas cblas
+ atlas_make_profile cblas -lacblas
if use fortran; then
- atlas_install blas f77blas
- use lapack && atlas_install lapack lapack
+ atlas_make_profile blas -lf77blas
+ use lapack && atlas_make_profile lapack -lalapack
fi
- if [[ -e "${S}_build_shared"/lib/libptcblas.so ]]; then
- atlas_install cblas ptcblas
- use fortran && atlas_install blas ptf77blas
+ if [[ -e ${S}_build_shared/lib/libptcblas.a ]]; then
+ atlas_make_profile cblas -lptcblas -lpthread
+ use fortran && atlas_make_profile blas -lptf77blas -lpthread
fi
insinto /usr/include/${PN}
doins include/*.h || die
- #dosym atlas/clapack.h /usr/include/clapack.h
+ dosym atlas/clapack.h /usr/include/clapack.h
cd doc
dodoc INDEX.txt AtlasCredits.txt ChangeLog