From 7728e30c9b59f5c7f4855d8fc7aa9240cda567ba Mon Sep 17 00:00:00 2001 From: Sébastien Fabbro Date: Mon, 7 Mar 2016 20:58:31 +0000 Subject: sci-libs/atlas: initial import Required for other packages which use the pure clapack API. Best not used for pure blas/lapack, see science overlay instead for now. Package-Manager: portage-2.2.27 --- sci-libs/atlas/Manifest | 2 + sci-libs/atlas/atlas-3.10.2.ebuild | 221 +++++++++++++++++++++ .../atlas/files/atlas-3.10.2-format-security.patch | 198 ++++++++++++++++++ .../atlas/files/atlas-3.10.2-x32-support.patch | 93 +++++++++ sci-libs/atlas/metadata.xml | 22 ++ 5 files changed, 536 insertions(+) create mode 100644 sci-libs/atlas/Manifest create mode 100644 sci-libs/atlas/atlas-3.10.2.ebuild create mode 100644 sci-libs/atlas/files/atlas-3.10.2-format-security.patch create mode 100644 sci-libs/atlas/files/atlas-3.10.2-x32-support.patch create mode 100644 sci-libs/atlas/metadata.xml (limited to 'sci-libs/atlas') diff --git a/sci-libs/atlas/Manifest b/sci-libs/atlas/Manifest new file mode 100644 index 000000000000..caffa2c89aea --- /dev/null +++ b/sci-libs/atlas/Manifest @@ -0,0 +1,2 @@ +DIST atlas3.10.2.tar.bz2 4904923 SHA256 3aab139b118bf3fcdb4956fbd71676158d713ab0d3bccb2ae1dc3769db22102f SHA512 9fe04cfa1f89449db047d1a4659a656964d13117c783cbbe43344eb32555736f037d9cd30c5ae1514c08ad5b8949a3982d7fe102d707ddb62288e76b2607fbb1 WHIRLPOOL e56936da713b0a1eb560d993bd29da0ac65923bdd2298c0a240a933fbf8961cd151020756ab550e716eae153d97c96d713512cda208a9c1a7c34467bd591fcd5 +DIST lapack-3.6.0.tgz 6792324 SHA256 a9a0082c918fe14e377bbd570057616768dca76cbdc713457d8199aaa233ffc3 SHA512 bc50441d415ef8896dd7626d77c6104184b996e758704366288089f03d4c99d068e33153b0d13305310886017e5d2e716130f812a95cfcad36ef37fe20417ab8 WHIRLPOOL 5576d0a81b2645fe95ef7011cc398f31142b8dcd01cdf5945e3db0e73ae1768766ea54254b40f4c6a581a6fb77b911595fccd597be0536833118af5877bb0c64 diff --git a/sci-libs/atlas/atlas-3.10.2.ebuild b/sci-libs/atlas/atlas-3.10.2.ebuild new file mode 100644 index 000000000000..7e80dd99df45 --- /dev/null +++ b/sci-libs/atlas/atlas-3.10.2.ebuild @@ -0,0 +1,221 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=6 + +FORTRAN_NEEDED=fortran + +inherit fortran-2 toolchain-funcs versionator + +LAPACKP=lapack-3.6.0.tgz + +DESCRIPTION="Automatically Tuned Linear Algebra Software" +HOMEPAGE="http://math-atlas.sourceforge.net/" +SRC_URI="mirror://sourceforge/math-atlas/${PN}${PV}.tar.bz2 + fortran? ( lapack? ( http://www.netlib.org/lapack/${LAPACKP} ) )" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux" +IUSE="doc fortran generic lapack static-libs threads" + +RDEPEND="" +DEPEND="${RDEPEND}" + +S="${WORKDIR}/ATLAS" + +PATCHES=( + "${FILESDIR}/${P}-x32-support.patch" + "${FILESDIR}/${P}-format-security.patch" +) + +pkg_setup() { + local _cpufreq + for _cpufreq in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do + if [ -f ${_cpufreq} ]; then + if ! grep -q performance ${_cpufreq}; then + echo 2> /dev/null performance > ${_cpufreq} || \ + die "${PN} needs all cpu set to performance" + fi + fi + done + use fortran && fortran-2_pkg_setup +} + +src_configure() { + # hack needed to trick the flaky gcc detection + local mycc="$(type -P $(tc-getCC))" + [[ ${mycc} == *gcc* ]] && mycc=gcc + atlas_configure() { + local myconf=( + --prefix="${ED}/usr" + --libdir="${ED}/usr/$(get_libdir)" + --incdir="${ED}/usr/include" + --cc="$(tc-getCC)" + "-D c -DWALL" + "-C acg '${mycc}'" + "-F acg '${CFLAGS}'" + "-Ss pmake '\$(MAKE) ${MAKEOPTS}'" + ) + + # OpenMP shown to decreased performance over POSIX threads + # (at least in 3.9.x, see atlas-dev mailing list) + if use threads; then + if use generic; then # 2 threads is most generic + myconf+=( "-t 2" "-Si omp 0" ) + else + myconf+=( "-t -1" "-Si omp 0" ) + fi + else + myconf+=( "-t 0" "-Si omp 0" ) + fi + + if use amd64 || use ppc64 || use sparc; then + if [ ${ABI} = amd64 ] || [ ${ABI} = ppc64 ] || [ ${ABI} = sparc64 ] ; then + myconf+=( "-b 64" ) + elif [ ${ABI} = x86 ] || [ ${ABI} = ppc ] || [ ${ABI} = sparc32 ] ; then + myconf+=( "-b 32" ) + elif [ ${ABI} = x32 ] ; then + myconf+=( "-b 48" ) + else + myconf+=( "-b 64" ) + fi + elif use ppc || use x86; then + myconf+=( "-b 32" ) + elif use ia64; then + myconf+=( "-b 64" ) + fi + if use fortran; then + myconf+=( + "-C if '$(type -P $(tc-getFC))'" + "-F if '${FFLAGS}'" + ) + if use lapack; then + myconf+=( + "-Si latune 1" + "--with-netlib-lapack-tarfile=${DISTDIR}/${LAPACKP}" + ) + else + myconf+=( "-Si latune 0" ) + fi + else + myconf+=( "-Si latune 0" "--nof77" ) + fi + # generic stuff found by make make xprint_enums in atlas build dir + # basically assuming sse2+sse1 and 2 threads max + use generic && use x86 && myconf+=( "-V 384 -A 13") + use generic && use amd64 && myconf+=( "-V 384 -A 24") + + local confdir="${S}_${1}"; shift + myconf+=( $@ ) + mkdir "${confdir}" && cd "${confdir}" + # for debugging + echo ${myconf[@]} > myconf.out + "${S}"/configure ${myconf[@]} || die "configure in ${confdir} failed" + } + + atlas_configure shared "-Fa alg -fPIC" ${EXTRA_ECONF} + use static-libs && atlas_configure static ${EXTRA_ECONF} +} + +src_compile() { + atlas_compile() { + pushd "${S}_${1}" > /dev/null + # atlas does its own parallel builds + emake -j1 build + cd lib + emake libclapack.a + [[ -e libptcblas.a ]] && emake libptclapack.a + popd > /dev/null + } + + atlas_compile shared + use static-libs && atlas_compile static +} + +src_test() { + cd "${S}_shared" + emake -j1 check time +} + +# transform a static archive into a shared library and install them +# atlas_install_libs [extra link flags] +atlas_install_libs() { + local libname=$(basename ${1%.*}) + einfo "Installing ${libname}" + local soname=${libname}.so.$(get_major_version) + shift + pushd "${S}_shared"/lib > /dev/null + ${LINK:-$(tc-getCC)} ${LDFLAGS} -shared -Wl,-soname=${soname} \ + -Wl,--whole-archive ${libname}.a -Wl,--no-whole-archive \ + "$@" -o ${soname} || die "Creating ${soname} failed" + dolib.so ${soname} + ln -s ${soname} ${soname%.*} + dosym ${soname} /usr/$(get_libdir)/${soname%.*} + popd > /dev/null + use static-libs && dolib.a "${S}_static"/lib/${libname}.a +} + +src_install() { + cd "${S}_shared/lib" + # rename to avoid collision with other packages + local l + for l in {,c}{blas,lapack}; do + if [[ -e lib${l}.a ]]; then + mv lib{,atl}${l}.a + use static-libs && mv "${S}"_static/lib/lib{,atl}${l}.a + fi + done + + [[ -e libptcblas.a ]] && PTLIBS="-lpthread" + + # atlas + atlas_install_libs libatlas.a -lm ${PTLIBS} + + # cblas + atlas_install_libs libatlcblas.a -lm -L. -latlas + + # cblas threaded + [[ -e libptcblas.a ]] && \ + atlas_install_libs libptcblas.a -lm -L. -latlas ${PTLIBS} + + if use lapack; then + # clapack + atlas_install_libs libatlclapack.a -lm -L. -latlas -latlcblas + + # clapack threaded + [[ -e libptclapack.a ]] && \ + atlas_install_libs libptclapack.a -lm -L. -latlas -lptcblas ${PTLIBS} + fi + + if use fortran; then + LINK=$(tc-getF77) + + # blas + atlas_install_libs libf77blas.a -lm -L. -latlas + + # blas threaded + [[ -e libptf77blas.a ]] && \ + atlas_install_libs libptf77blas.a -lm -L. -latlas ${PTLIBS} + + if use lapack; then + # lapack + atlas_install_libs libatllapack.a \ + -lm -L. -latlas -latlcblas -lf77blas + # lapack threaded + [[ -e libptlapack.a ]] && \ + atlas_install_libs libptlapack.a -lm -L. -latlas -lptcblas -lptf77blas ${PTLIBS} + fi + fi + + cd "${S}" + insinto /usr/include/${PN} + doins include/*.h + + cd "${S}/doc" + dodoc INDEX.txt AtlasCredits.txt ChangeLog + use doc && dodoc atlas*pdf cblas.pdf cblasqref.pdf + use doc && use fortran && dodoc f77blas*pdf + use doc && use fortran && use lapack && dodoc *lapack*pdf +} diff --git a/sci-libs/atlas/files/atlas-3.10.2-format-security.patch b/sci-libs/atlas/files/atlas-3.10.2-format-security.patch new file mode 100644 index 000000000000..f3f45d774510 --- /dev/null +++ b/sci-libs/atlas/files/atlas-3.10.2-format-security.patch @@ -0,0 +1,198 @@ + bin/atlas_install.c | 46 +++++++++++++++++++++++----------------------- + 1 file changed, 23 insertions(+), 23 deletions(-) + +diff --git a/bin/atlas_install.c b/bin/atlas_install.c +index 2753cbf..21b716d 100644 +--- a/bin/atlas_install.c ++++ b/bin/atlas_install.c +@@ -483,9 +483,9 @@ void PrintStartStop(FILE *fp0, FILE *fp1, int nspc, int START, int sec, + fprintf(fp1, "\n\n"); + } + if (fp0) +- fprintf(fp0, ln); ++ fprintf(fp0, "%s", ln); + if (fp1) +- fprintf(fp1, ln); ++ fprintf(fp1, "%s", ln); + } + + int LnIsCont(char *ln) +@@ -776,11 +776,11 @@ void GoToTown(int ARCHDEF, int L1DEF, int TuneLA) + if (DefInstall) + { + sprintf(ln, "%s IRunMMDef pre=%c %s %s\n", fmake, pre, redir, ln2); +- fprintf(stdout, ln); ++ fprintf(stdout, "%s", ln); + ATL_Cassert(system(ln)==0, "BUILDING BLOCK MATMUL TUNE", ln2); + } + sprintf(ln, "%s %s pre=%c %s %s\n", fmake, fnam, pre, redir, ln2); +- fprintf(stdout, ln); ++ fprintf(stdout, "%s", ln); + ATL_Cassert(system(ln)==0, "BUILDING BLOCK MATMUL TUNE", ln2); + PrintBanner(ln2, 0, 2, ip+1, 1); + } +@@ -836,7 +836,7 @@ void GoToTown(int ARCHDEF, int L1DEF, int TuneLA) + if (!FileExists(fnam)) + { + sprintf(ln, "%s %s pre=%c %s %s", fmake, fnam, pre, redir, ln2); +- fprintf(stdout, ln); ++ fprintf(stdout, "%s", ln); + ATL_Cassert(system(ln)==0, "BUILDING BLOCK MATMUL TUNE", ln2); + } + fp = fopen(fnam, "r"); +@@ -854,7 +854,7 @@ void GoToTown(int ARCHDEF, int L1DEF, int TuneLA) + { + sprintf(ln, "%s %s pre=%c nb=%d %s %s", + fmake, fnam, pre, ncnb, redir, ln2); +- fprintf(stdout, ln); ++ fprintf(stdout, "%s", ln); + ATL_Cassert(system(ln)==0, "BUILDING BLOCK MATMUL TUNE", ln2); + } + GetInstLogFile(fnam, pre, &muladd, &pf, &lat, &nb, &mu, &nu, &ku, +@@ -881,7 +881,7 @@ void GoToTown(int ARCHDEF, int L1DEF, int TuneLA) + } + + sprintf(ln, "%s MMinstall pre=%c %s %s\n", fmake, pre, redir, ln2); +- fprintf(stdout, ln); ++ fprintf(stdout, "%s", ln); + ATL_Cassert(system(ln)==0, "BUILDING BLOCK MATMUL TUNE", ln2); + + fprintf(fpsum, "\n"); +@@ -896,7 +896,7 @@ void GoToTown(int ARCHDEF, int L1DEF, int TuneLA) + PrintBanner(ln2, 1, 2, ip+1, 2); + sprintf(ln, "%s INSTALL_LOG/atlas_cacheedge.h pre=%c %s %s\n", + fmake, pre, redir, ln2); +- fprintf(stdout, ln); ++ fprintf(stdout, "%s", ln); + ATL_Cassert(system(ln)==0, "CACHEEDGE DETECTION", ln2); + PrintBanner(ln2, 0, 2, ip+1, 2); + } +@@ -922,7 +922,7 @@ void GoToTown(int ARCHDEF, int L1DEF, int TuneLA) + { + sprintf(ln, "%s %s pre=%c %s %s\n", + fmake, ln3, pre, redir, ln2); +- fprintf(stdout, ln); ++ fprintf(stdout, "%s", ln); + ATL_Cassert(system(ln)==0, "CACHEEDGE DETECTION", ln2); + } + fp = fopen(ln3, "r"); +@@ -955,7 +955,7 @@ void GoToTown(int ARCHDEF, int L1DEF, int TuneLA) + "\n\n STAGE 2-%d-3: COPY/NO-COPY CROSSOVER DETECTION\n", ip+1); + + sprintf(ln, "%s %s pre=%c %s %s\n", fmake, fnam, pre, redir, ln2); +- fprintf(stdout, ln); ++ fprintf(stdout, "%s", ln); + ATL_Cassert(system(ln)==0, "COPY/NO-COPY CROSSOVER DETECTION", ln2); + PrintBanner(ln2, 0, 2, ip+1, 3); + fprintf(stdout, " done.\n"); +@@ -970,17 +970,17 @@ void GoToTown(int ARCHDEF, int L1DEF, int TuneLA) + { + sprintf(ln, "%s INSTALL_LOG/atlas_%ctrsmXover.h pre=%c %s %s\n", + fmake, pre, pre, redir, ln2); +- fprintf(stdout, ln); ++ fprintf(stdout, "%s", ln); + ATL_Cassert(system(ln)==0, "L3BLAS TUNING", ln2); + } + else + { + sprintf(ln, "%s Il3lib pre=%c %s %s\n", fmake, pre, redir, ln2); +- fprintf(stdout, ln); ++ fprintf(stdout, "%s", ln); + ATL_Cassert(system(ln)==0, "L3BLAS TUNING", ln2); + } + sprintf(ln, "%s %ccblaslib %s %s\n", fmake, pre, redir, ln2); /* cblas */ +- fprintf(stdout, ln); ++ fprintf(stdout, "%s", ln); + ATL_Cassert(system(ln)==0, "L3BLAS TUNING", ln2); + PrintBanner(ln2, 0, 2, ip+1, 5); + PrintStartStop(stdout, fpsum, 3, 0, 2, ip+1, 4, "L3BLAS TUNE"); +@@ -993,7 +993,7 @@ void GoToTown(int ARCHDEF, int L1DEF, int TuneLA) + sprintf(ln2, "INSTALL_LOG/%cMVNTUNE.LOG", pre); + PrintBanner(ln2, 1, 2, ip+1, 7); + sprintf(ln, "%s %s pre=%c %s %s\n", fmake, fnam, pre, redir, ln2); +- fprintf(stdout, ln); ++ fprintf(stdout, "%s", ln); + ATL_Cassert(system(ln)==0, "MVNTUNE", ln2); + ATL_Cassert(FileIsThere(fnam), "MVNTUNE", ln2); + PrintBanner(ln2, 0, 2, ip+1, 7); +@@ -1026,7 +1026,7 @@ void GoToTown(int ARCHDEF, int L1DEF, int TuneLA) + sprintf(ln2, "INSTALL_LOG/%cMVTTUNE.LOG", pre); + PrintBanner(ln2, 1, 2, ip+1, 7); + sprintf(ln, "%s %s pre=%c %s %s\n", fmake, fnam, pre, redir, ln2); +- fprintf(stdout, ln); ++ fprintf(stdout, "%s", ln); + ATL_Cassert(system(ln)==0, "MVTTUNE", ln2); + ATL_Cassert(FileIsThere(fnam), "MVTTUNE", ln2); + PrintBanner(ln2, 0, 2, ip+1, 7); +@@ -1061,7 +1061,7 @@ void GoToTown(int ARCHDEF, int L1DEF, int TuneLA) + sprintf(ln2, "INSTALL_LOG/%cR1TUNE.LOG", pre); + PrintBanner(ln2, 1, 2, ip+1, 7); + sprintf(ln, "%s %s pre=%c %s %s\n", fmake, fnam, pre, redir, ln2); +- fprintf(stdout, ln); ++ fprintf(stdout, "%s", ln); + ATL_Cassert(system(ln)==0, "R1TUNE", ln2); + ATL_Cassert(FileIsThere(fnam), "R1TUNE", ln2); + PrintBanner(ln2, 0, 2, ip+1, 7); +@@ -1099,7 +1099,7 @@ void GoToTown(int ARCHDEF, int L1DEF, int TuneLA) + sprintf(ln2, "INSTALL_LOG/LIBBUILD.LOG"); + PrintBanner(ln2, 1, 3, 1, 1); + sprintf(ln, "%s IBuildLibs %s %s\n", fmake, redir, ln2); +- fprintf(stdout, ln); ++ fprintf(stdout, "%s", ln); + ATL_Cassert(system(ln)==0, "LIBRARY BUILD", ln2); + ATL_Cassert(FileIsThere(fnam), "LIBRARY BUILD", ln2); + PrintBanner(ln2, 0, 3, 1, 1); +@@ -1110,7 +1110,7 @@ void GoToTown(int ARCHDEF, int L1DEF, int TuneLA) + PrintBanner(ln2, 1, 4, 1, 1); + PrintStartStop(stdout, fpsum, 3, 1, 4, 1, 1, "TRSM TUNE"); + sprintf(ln, "%s IPostTune %s %s\n", fmake, redir, ln2); +- fprintf(stdout, ln); ++ fprintf(stdout, "%s", ln); + ATL_Cassert(system(ln)==0, "POST-BUILD TUNE", ln2); + PrintStartStop(stdout, fpsum, 3, 0, 4, 1, 0, NULL); + ATL_Cassert(FileIsThere(fnam), "POST-BUILD TUNE", ln2); +@@ -1121,7 +1121,7 @@ void GoToTown(int ARCHDEF, int L1DEF, int TuneLA) + sprintf(ln2, "INSTALL_LOG/PTTUNE.LOG"); + PrintBanner(ln2, 1, 4, 2, 0); + sprintf(ln, "%s IPTtune %s %s\n", fmake, redir, ln2); +- fprintf(stdout, ln); ++ fprintf(stdout, "%s", ln); + ATL_Cassert(system(ln)==0, "THREADING TUNE", ln2); + PrintStartStop(stdout, fpsum, 3, 0, 4, 2, 0, "THREADING TUNE"); + +@@ -1129,7 +1129,7 @@ void GoToTown(int ARCHDEF, int L1DEF, int TuneLA) + sprintf(ln2, "INSTALL_LOG/LIBPTBUILD.LOG"); + PrintBanner(ln2, 1, 4, 2, 1); + sprintf(ln, "%s IBuildPtlibs %s %s\n", fmake, redir, ln2); +- fprintf(stdout, ln); ++ fprintf(stdout, "%s", ln); + ATL_Cassert(system(ln)==0, "PTLIBRARY BUILD", ln2); + PrintBanner(ln2, 0, 4, 2, 1); + PrintStartStop(stdout, fpsum, 3, 0, 4, 2, 1, "THREADING BUILD"); +@@ -1144,7 +1144,7 @@ void GoToTown(int ARCHDEF, int L1DEF, int TuneLA) + PrintStartStop(stdout, fpsum, 6, 1, 4, 3, ip+1, ln2); + sprintf(ln2, "INSTALL_LOG/%cLATUNE.LOG", pre); + PrintBanner(ln2, 1, 4, 3, ip+1); +- fprintf(stdout, ln); ++ fprintf(stdout, "%s", ln); + sprintf(ln, "%s ILATune pre=%c %s %s\n", fmake, pre, redir, ln2); + ATL_Cassert(system(ln)==0, "LAPACK TUNE", ln2); + PrintStartStop(stdout, fpsum, 6, 0, 4, 3, ip+1, NULL); +@@ -1162,7 +1162,7 @@ void GoToTown(int ARCHDEF, int L1DEF, int TuneLA) + #else + sprintf(ln, "%s IBuildLibs %s %s\n", fmake, redir, ln2); + #endif +- fprintf(stdout, ln); ++ fprintf(stdout, "%s", ln); + ATL_Cassert(system(ln)==0, "STATIC LIBRARY UPDATE", ln2); + PrintBanner(ln2, 0, 5, 1, 1); + PrintStartStop(stdout, fpsum, 3, 0, 5, 1, 0, "FINAL STATIC LIBRARY UPDATE"); +@@ -1172,7 +1172,7 @@ void GoToTown(int ARCHDEF, int L1DEF, int TuneLA) + sprintf(ln2, "INSTALL_LOG/LIBDYBUILD.LOG"); + PrintBanner(ln2, 1, 5, 2, 1); + sprintf(ln, "%s IBuildDyLibs %s %s\n", fmake, redir, ln2); +- fprintf(stdout, ln); ++ fprintf(stdout, "%s", ln); + ATL_Cassert(system(ln)==0, "DYLIBRARY BUILD", ln2); + PrintBanner(ln2, 0, 5, 2, 1); + PrintStartStop(stdout, fpsum, 3, 0, 5, 2, 0, NULL); diff --git a/sci-libs/atlas/files/atlas-3.10.2-x32-support.patch b/sci-libs/atlas/files/atlas-3.10.2-x32-support.patch new file mode 100644 index 000000000000..82e6980690cb --- /dev/null +++ b/sci-libs/atlas/files/atlas-3.10.2-x32-support.patch @@ -0,0 +1,93 @@ +--- ATLAS/CONFIG/src/SpewMakeInc.c.orig 2012-05-24 00:56:27.000000000 +0200 ++++ ATLAS/CONFIG/src/SpewMakeInc.c 2012-06-06 15:17:40.000000000 +0200 +@@ -370,7 +370,7 @@ + } + *f2cdefs = fdefs; + *ecdefs = cdefs; +- if (*ptrbits != 32 && *ptrbits != 64) ++ if (*ptrbits != 32 && *ptrbits != 64 && *ptrbits != 48) + *ptrbits = 0; + } + char *GetPtrbitsFlag(enum OSTYPE OS, enum MACHTYPE arch, int ptrbits, +@@ -418,6 +418,8 @@ + sp = "-m64"; + else if (ptrbits == 32) + sp = "-m32"; ++ else if (ptrbits == 48 && MachIsX86(arch)) ++ sp = "-mx32"; + } + return(sp); + } +--- ATLAS/CONFIG/src/gnuccw.c.orig 2012-06-06 15:30:05.000000000 +0200 ++++ ATLAS/CONFIG/src/gnuccw.c 2012-06-06 15:33:29.000000000 +0200 +@@ -363,7 +363,7 @@ + * -m64/32 args get passed to comp, asm & linker + */ + else if (at->len == 4 && +- (!strcmp(at->arg, "-m64") || !strcmp(at->arg, "-m32"))) ++ (!strcmp(at->arg, "-m64") || !strcmp(at->arg, "-m32") || !strcmp(at->arg, "-mx32"))) + { + if (at->arg[2] == '6') + *BITS = 64; +--- ATLAS/CONFIG/src/gcc3p.c.orig 2012-06-06 15:29:38.000000000 +0200 ++++ ATLAS/CONFIG/src/gcc3p.c 2012-06-06 15:31:17.000000000 +0200 +@@ -352,7 +352,7 @@ + * -m64/32 args get passed to comp, asm & linker + */ + else if (at->len == 4 && +- (!strcmp(at->arg, "-m64") || !strcmp(at->arg, "-m32"))) ++ (!strcmp(at->arg, "-m64") || !strcmp(at->arg, "-m32") || !strcmp(at->arg, "-mx32"))) + { + if (at->arg[2] == '6') + { +--- ATLAS/CONFIG/src/gnuf90w.c.orig 2012-06-06 15:29:28.000000000 +0200 ++++ ATLAS/CONFIG/src/gnuf90w.c 2012-06-06 15:30:36.000000000 +0200 +@@ -363,7 +363,7 @@ + * -m64/32 args get passed to comp, asm & linker + */ + else if (at->len == 4 && +- (!strcmp(at->arg, "-m64") || !strcmp(at->arg, "-m32"))) ++ (!strcmp(at->arg, "-m64") || !strcmp(at->arg, "-m32") || !strcmp(at->arg, "-mx32"))) + { + if (at->arg[2] == '6') + *BITS = 64; +--- ATLAS/CONFIG/src/probe_comp.c.orig 2012-06-06 15:29:51.000000000 +0200 ++++ ATLAS/CONFIG/src/probe_comp.c 2012-06-06 15:32:50.000000000 +0200 +@@ -614,6 +614,8 @@ + sp = "-m64"; + else if (ptrbits == 32) + sp = "-m32"; ++ else if (ptrbits == 48) ++ sp = "-mx32"; + } + return(sp); + } +@@ -1691,7 +1693,7 @@ + } + } + } +- if (*ptrbits != 32 && *ptrbits != 64) ++ if (*ptrbits != 32 && *ptrbits != 64 && *ptrbits != 48) + *ptrbits = 0; + } + +--- ATLAS/CONFIG/src/config.c.orig 2012-06-06 15:59:53.000000000 +0200 ++++ ATLAS/CONFIG/src/config.c 2012-06-06 16:00:07.000000000 +0200 +@@ -183,7 +183,7 @@ + i = sprintf(ln, "make IRun_comp args=\"-v %d -o atlconf.txt -O %d -A %d -Si nof77 %d -V %d %s %s", + verb, OS, arch, nof77, vecext, targarg, flags); + free(flags); +- if (ptrbits == 64 || ptrbits == 32) ++ if (ptrbits == 64 || ptrbits == 32 || ptrbits == 48) + { + sprintf(stmp, "-b %d", ptrbits); + ln = NewAppendedString(ln, stmp); +@@ -1272,7 +1272,7 @@ + } + *f2cdefs = fdefs; + *ecdefs = cdefs; +- if (*ptrbits != 32 && *ptrbits != 64) ++ if (*ptrbits != 32 && *ptrbits != 64 && *ptrbits != 48) + *ptrbits = 0; + } + diff --git a/sci-libs/atlas/metadata.xml b/sci-libs/atlas/metadata.xml new file mode 100644 index 000000000000..ac115a049487 --- /dev/null +++ b/sci-libs/atlas/metadata.xml @@ -0,0 +1,22 @@ + + + + + sci@gentoo.org + Gentoo Science Project + + + ATLAS is an approach for the automatic generation and optimization of + numerical software. Currently ATLAS supplies optimized versions for the + complete set of linear algebra kernels known as the Basic Linear Algebra + Subroutines (BLAS) for both c and F77 interfaces. It can also build + a subset of the linear algebra routine LAPACK library or the full + LAPACK using the reference LAPACK from Netlib. + + + Build atlas assuming a fairly generic architecture (sse2 for x86, core2 for amd64) + + + math-atlas + + -- cgit v1.2.3-18-g5258