From 4f4f0197037a2933f45723497234f3d9f3cdccb3 Mon Sep 17 00:00:00 2001 From: Silvan Calarco Date: Sat, 6 Jan 2024 03:49:16 +0100 Subject: [PATCH] rebuilt with liblapack-3.4.2-5mamba implementing extended precision routines (xblas) [release 3.8.4-3mamba;Mon Aug 26 2013] --- ATLAS-README | 32 ++ README.md | 2 + atlas-3.8.4-arm.patch | 375 +++++++++++++++ libatlas-3.8.4-fix-melf-link-flags.patch | 15 + libatlas-3.8.4-shared.patch | 111 +++++ libatlas.spec | 565 +++++++++++++++++++++++ 6 files changed, 1100 insertions(+) create mode 100644 ATLAS-README create mode 100644 atlas-3.8.4-arm.patch create mode 100644 libatlas-3.8.4-fix-melf-link-flags.patch create mode 100644 libatlas-3.8.4-shared.patch create mode 100644 libatlas.spec diff --git a/ATLAS-README b/ATLAS-README new file mode 100644 index 0000000..5c11388 --- /dev/null +++ b/ATLAS-README @@ -0,0 +1,32 @@ +Because ATLAS relies on compile-time optimizations to obtain improved +performance over BLAS and LAPACK, the resulting binaries are closely +tied to the hardware on which they are compiled, and can likely result +in very poor performance on other hardware. For this reason, +including a package like ATLAS in openmamba requires some compromises. +Firstly, a binary ATLAS package must perform reasonably well on the +entire range of hardware on which it could potentially be installed. +Optimizing ATLAS for the most modern hardware can result in +significant performance penalties for users using the same package on +older hardware. Second, building from the same source package must +result in identical binaries for any computer of a particular +architecture. This is because the binaries installed on a user's +computer are built on a computer in the openmamba Extras build system, +which will have hardware different from the end user's hardware, and +quite possibly different from other available hardware in the build +system. + +For i386 systems, 3 ATLAS subpackages are built for SSE1, SSE2, and SSE3 ix86 +extensions, using architectural defaults obtained from PIII, Pentium 4 with +SSE2 extension and PENTIUM 4 with SSE3 extensions respectively. + +This package is designed to build RPMs that are identical regardless +of where they are compiled and that provide reasonable performance on +a wide range of hardware. For users who want optimal performance on +particular hardware, custom RPMs can be built from the source package +by setting the RPM macro "enable_native_atlas" to a value of 1. This +can be done from the command line as in the following example: + +rpmbuild -D "enable_native_atlas 1" --rebuild libatlas-@VER_REL@.src.rpm + +This will cause the ATLAS build to use the achitectural default most +appropriate for the system on which the package is to be built. diff --git a/README.md b/README.md index 152a7e2..cff9a64 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,4 @@ # libatlas +The ATLAS (Automatically Tuned Linear Algebra Software) project is an ongoing research effort focusing on applying empirical techniques in order to provide portable performance. At present, it provides C and Fortran77 interfaces to a portably efficient BLAS implementation, as well as a few routines from LAPACK. + diff --git a/atlas-3.8.4-arm.patch b/atlas-3.8.4-arm.patch new file mode 100644 index 0000000..bb5e631 --- /dev/null +++ b/atlas-3.8.4-arm.patch @@ -0,0 +1,375 @@ +diff -ru ATLAS/CONFIG/include/atlconf.h ATLAS-3.8.4-arm/CONFIG/include/atlconf.h +--- ATLAS/CONFIG/include/atlconf.h 2011-05-14 19:33:24.000000000 +0200 ++++ ATLAS-3.8.4-arm/CONFIG/include/atlconf.h 2011-05-16 13:50:44.000000000 +0200 +@@ -14,9 +14,9 @@ + OSWin9x, OSWinNT, OSHPUX, OSFreeBSD, OSOSX}; + #define OSIsWin(OS_) (((OS_) == OSWinNT) || ((OS_) == OSWin9x)) + +-enum ARCHFAM {AFOther=0, AFPPC, AFSPARC, AFALPHA, AFX86, AFIA64, AFMIPS}; ++enum ARCHFAM {AFOther=0, AFPPC, AFSPARC, AFALPHA, AFX86, AFIA64, AFMIPS, AFARM}; + +-#define NMACH 37 ++#define NMACH 39 + static char *machnam[NMACH] = + {"UNKNOWN", "POWER3", "POWER4", "POWER5", "PPCG4", "PPCG5", + "POWER6", "POWER7", +@@ -25,7 +25,7 @@ + "Efficeon", "K7", "HAMMER", "AMD64K10h", "UNKNOWNx86", + "IA64Itan", "IA64Itan2", + "USI", "USII", "USIII", "USIV", "UST2", "UnknownUS", +- "MIPSR1xK", "MIPSICE9"}; ++ "MIPSR1xK", "MIPSICE9", "ARMv7VFP", "ARMv7VFPNEON"}; + enum MACHTYPE {MACHOther, IbmPwr3, IbmPwr4, IbmPwr5, PPCG4, PPCG5, + IbmPwr6, IbmPwr7, + IntP5, IntP5MMX, IntPPRO, IntPII, IntPIII, IntPM, IntCoreS, +@@ -34,7 +34,8 @@ + IA64Itan, IA64Itan2, + SunUSI, SunUSII, SunUSIII, SunUSIV, SunUST2, SunUSX, + MIPSR1xK, /* includes R10K, R12K, R14K, R16K */ +- MIPSICE9 /* SiCortex ICE9 -- like MIPS5K */ ++ MIPSICE9, /* SiCortex ICE9 -- like MIPS5K */ ++ ARMv7VFP, ARMv7VFPNEON + }; + #define MachIsX86(mach_) \ + ( (mach_) >= IntP5 && (mach_) <= x86X ) +@@ -51,6 +52,8 @@ + #endif + #define MachIsPPC(mach_) \ + ( (mach_) >= PPCG4 && (mach_) <= PPCG5 ) ++#define MachIsARM(mach_) \ ++ ( (mach_) >= ARMv7VFP && (mach_) <= ARMv7VFPNEON ) + + static char *f2c_namestr[5] = {"UNKNOWN","Add_", "Add__", "NoChange", "UpCase"}; + static char *f2c_intstr[5] = +@@ -63,18 +66,18 @@ + enum F2CINT {f2c_IntErr=0, FintCint, FintClong, FintClonglong, FintCshort}; + enum F2CSTRING {f2c_StrErr=0, fstrSun, fstrCray, fstrStructVal, fstrStructPtr}; + +-#define NISA 6 ++#define NISA 7 + static char *ISAXNAM[NISA] = +- {"", "AltiVec", "SSE3", "SSE2", "SSE1", "3DNow"}; +-enum ISAEXT {ISA_None=0, ISA_AV, ISA_SSE3, ISA_SSE2, ISA_SSE1, ISA_3DNow}; ++ {"", "AltiVec", "SSE3", "SSE2", "SSE1", "3DNow", "NEON"}; ++enum ISAEXT {ISA_None=0, ISA_AV, ISA_SSE3, ISA_SSE2, ISA_SSE1, ISA_3DNow, ISA_NEON}; + +-#define NASMD 7 ++#define NASMD 8 + enum ASMDIA + {ASM_None=0, gas_x86_32, gas_x86_64, gas_sparc, gas_ppc, gas_parisc, +- gas_mips}; ++ gas_mips, gas_arm}; + static char *ASMNAM[NASMD] = + {"", "GAS_x8632", "GAS_x8664", "GAS_SPARC", "GAS_PPC", "GAS_PARISC", +- "GAS_MIPS"}; ++ "GAS_MIPS", "GAS_ARM"}; + + + /* +diff -ru ATLAS/CONFIG/src/Makefile ATLAS-3.8.4-arm/CONFIG/src/Makefile +--- ATLAS/CONFIG/src/Makefile 2011-05-14 19:33:24.000000000 +0200 ++++ ATLAS-3.8.4-arm/CONFIG/src/Makefile 2011-04-20 16:43:26.000000000 +0200 +@@ -151,6 +151,11 @@ + $(MAKE) $(atlrun) atldir=$(mydir) exe=xprobe_sse3 args="$(args)" \ + redir=config0.out + - cat config0.out ++IRun_NEON : ++ $(CC) $(CCFLAGS) -mfpu=neon -o xprobe_neon $(SRCdir)/backend/probe_svec.c $(SRCdir)/backend/probe_NEON.S ++ $(MAKE) $(atlrun) atldir=$(mydir) exe=xprobe_neon args="$(args)" \ ++ redir=config0.out ++ - cat config0.out + + IRun_GAS_SPARC : + $(CC) $(CCFLAGS) -o xprobe_gas_sparc $(SRCdir)/backend/probe_this_asm.c $(SRCdir)/backend/probe_gas_sparc.S +@@ -177,6 +182,11 @@ + $(MAKE) $(atlrun) atldir=$(mydir) exe=xprobe_gas_x8632 args="$(args)" \ + redir=config0.out + - cat config0.out ++IRun_GAS_ARM : ++ $(CC) $(CCFLAGS) -o xprobe_gas_arm $(SRCdir)/backend/probe_this_asm.c $(SRCdir)/backend/probe_gas_arm.S ++ $(MAKE) $(atlrun) atldir=$(mydir) exe=xprobe_gas_arm args="$(args)" \ ++ redir=config0.out ++ - cat config0.out + + IRunC2C : + - rm -f config0.out xc2c c2cslave.o +diff -ru ATLAS/CONFIG/src/atlcomp.txt ATLAS-3.8.4-arm/CONFIG/src/atlcomp.txt +--- ATLAS/CONFIG/src/atlcomp.txt 2011-05-14 19:33:24.000000000 +0200 ++++ ATLAS-3.8.4-arm/CONFIG/src/atlcomp.txt 2012-05-16 19:47:42.000000000 +0200 +@@ -164,6 +164,19 @@ + MACH=P4,PM OS=WinNT LVL=0 COMPS=icc,dmc,smc,dkc,skc,xcc + 'icl' '-QxN -O3 -Qprec -fp:extended -fp:except -nologo -Oy' + # ++# ARM defaults ++# ++MACH=ARMv7VFP,ARMv7VFPNEON OS=ALL LVL=1000 COMPS=icc,xcc ++ 'gcc' '-march=armv7-a -O1' ++MACH=ARMv7VFPNEON OS=ALL LVL=1000 COMPS=smc,skc ++ 'gcc' '-march=armv7-a -mfpu=neon -ffast-math -O3 -fschedule-insns -fschedule-insns2 -fprefetch-loop-arrays' ++MACH=ARMv7VFP OS=ALL LVL=1000 COMPS=smc,skc ++ 'gcc' '-march=armv7-a -mfpu=vfpv3 -O1 -fno-expensive-optimizations' ++MACH=ARMv7VFP,ARMv7VFPNEON OS=ALL LVL=1000 COMPS=dmc,dkc ++ 'gcc' '-march=armv7-a -mfpu=vfpv3 -O1 -fno-schedule-insns2' ++MACH=ARMv7VFP,ARMv7VFPNEON OS=ALL LVL=1000 COMPS=f77 ++ 'gfortran' '-march=armv7-a -O1' ++# + # Generic defaults + # + MACH=ALL OS=ALL LVL=5 COMPS=icc,smc,dmc,skc,dkc,xcc +diff -ru ATLAS/CONFIG/src/atlconf_misc.c ATLAS-3.8.4-arm/CONFIG/src/atlconf_misc.c +--- ATLAS/CONFIG/src/atlconf_misc.c 2011-05-14 19:33:24.000000000 +0200 ++++ ATLAS-3.8.4-arm/CONFIG/src/atlconf_misc.c 2011-04-20 16:43:26.000000000 +0200 +@@ -480,6 +480,7 @@ + else if (strstr(res, "alpha")) fam = AFALPHA; + else if (strstr(res, "ia64")) fam = AFIA64; + else if (strstr(res, "mips")) fam = AFMIPS; ++ else if (strstr(res, "arm")) fam = AFARM; + else if ( strstr(res, "i686") || strstr(res, "i586") || + strstr(res, "i486") || strstr(res, "i386") || + strstr(res, "x86") || strstr(res, "x86_64") ) fam = AFX86; +@@ -501,6 +502,7 @@ + strstr(res, "i486") || strstr(res, "i386") || + strstr(res, "x86_64") ) fam = AFX86; + else if (strstr(res, "mips")) fam = AFMIPS; ++ else if (strstr(res, "arm")) fam = AFARM; + } + } + return(fam); +diff -ru ATLAS/CONFIG/src/backend/archinfo_linux.c ATLAS-3.8.4-arm/CONFIG/src/backend/archinfo_linux.c +--- ATLAS/CONFIG/src/backend/archinfo_linux.c 2011-05-14 19:33:24.000000000 +0200 ++++ ATLAS-3.8.4-arm/CONFIG/src/backend/archinfo_linux.c 2011-05-16 14:19:02.000000000 +0200 +@@ -166,6 +166,20 @@ + else if (strstr(res, "AMD-K7")) mach = AmdAthlon; + } + break; ++ case AFARM: ++ if ( !CmndOneLine(NULL, "fgrep 'Processor' /proc/cpuinfo", res) ) ++ { ++ if (strstr(res, "ARMv7") || strstr(res,"v7l")) mach = ARMv7VFP; ++ } ++ else if ( !CmndOneLine(NULL, "fgrep 'cpu' /proc/cpuinfo", res) ) ++ { ++ if (strstr(res, "ARMv7") || strstr(res,"v7l")) mach = ARMv7VFP; ++ } ++ if ( !CmndOneLine(NULL, "fgrep 'Features' /proc/cpuinfo", res) ) ++ { ++ if (strstr(res, "neon")) mach = ARMv7VFPNEON; ++ } ++ break; + /* + * Add these back if we get machine access and can test + */ +diff -ru ATLAS/README ATLAS-3.8.4-arm/README +--- ATLAS/README 2011-05-14 19:33:23.000000000 +0200 ++++ ATLAS-3.8.4-arm/README 2012-06-18 23:19:46.000000000 +0200 +@@ -1,3 +1,19 @@ ++ATLAS-3.8.4-arm ++released 18 June 2012 ++ ++Changes since beta 1: ++ ++ - assembly headers changed to link properly on Unbuntu 11.10 and 12.04 ++ - VFP single-precision GEMM by Clint Whaley backported from ATLAS 3.9.x ++ ++Changes since beta 2: ++ ++ - VFP assembly GEMM kernels added for hard floating-point ABI (like Ubuntu 12.04) ++ ++Changes since beta 3: ++ (none) ++ ++ + This is the README index file. If you want install intructions, + read ATLAS/INSTALL.txt. Windows users should read + ATLAS/doc/Windows.txt as well. Note that all of this documentation is +diff -ru ATLAS/tune/blas/gemm/CASES/ccases.flg ATLAS-3.8.4-arm/tune/blas/gemm/CASES/ccases.flg +--- ATLAS/tune/blas/gemm/CASES/ccases.flg 2011-05-14 19:34:10.000000000 +0200 ++++ ATLAS-3.8.4-arm/tune/blas/gemm/CASES/ccases.flg 2012-06-03 14:25:17.000000000 +0200 +@@ -1,5 +1,5 @@ + "" +-20 ++25 + 304 192 4 3 8 0 4 4 3 8 ATL_mm4x3x8p.c "R. Clint Whaley" \ + gcc + -mcpu=ultrasparc -mtune=ultrasparc -fomit-frame-pointer -O +@@ -52,3 +52,18 @@ + gcc + -x assembler-with-cpp -mips4 + 332 192 8 2 4 1 0 8 2 4 ATL_smm8x2x4_av.c "IBM" ++333 448 4 4 2 1 1 4 4 2 ATL_smm4x4x2pf_arm.c "R. Clint Whaley" \ ++gcc ++-x assembler-with-cpp -mfpu=vfpv3 -march=armv7-a ++334 448 4 4 2 1 1 4 4 2 ATL_smm4x4x2dld_arm.c "R. Clint Whaley" \ ++gcc ++-x assembler-with-cpp -mfpu=vfpv3 -march=armv7-a ++335 448 4 4 2 1 1 4 4 2 ATL_smm4x4x2pf_armhf.c "R. Clint Whaley" \ ++gcc ++-x assembler-with-cpp -mfpu=vfpv3 -march=armv7-a ++336 448 4 4 2 1 1 4 4 2 ATL_smm4x4x2dld_armhf.c "R. Clint Whaley" \ ++gcc ++-x assembler-with-cpp -mfpu=vfpv3 -march=armv7-a ++337 480 4 4 4 1 1 4 4 4 ATL_smm4x4x4p_neon.c "Vesperix Corporation" \ ++gcc ++-march=armv7-a -mfpu=neon -O2 +diff -ru ATLAS/tune/blas/gemm/CASES/dcases.flg ATLAS-3.8.4-arm/tune/blas/gemm/CASES/dcases.flg +--- ATLAS/tune/blas/gemm/CASES/dcases.flg 2011-05-14 19:34:10.000000000 +0200 ++++ ATLAS-3.8.4-arm/tune/blas/gemm/CASES/dcases.flg 2012-06-03 14:23:02.000000000 +0200 +@@ -1,5 +1,5 @@ + "" +-31 ++33 + 306 192 4 3 8 0 4 4 3 8 ATL_mm4x3x8p.c "R. Clint Whaley" \ + gcc + -mcpu=ultrasparc -mtune=ultrasparc -fomit-frame-pointer -O -fno-schedule-insns -fno-schedule-insns2 +@@ -85,6 +85,11 @@ + 338 192 8 4 2 1 0 8 4 2 ATL_dmm8x4x2_vsx.c "IBM" \ + gcc + -O3 -mvsx +- ++339 448 4 4 2 1 1 4 4 2 ATL_dmm4x4x2pf_arm.c "R. Clint Whaley" \ ++gcc ++-x assembler-with-cpp -mfpu=vfpv3 -march=armv7-a ++340 448 4 4 2 1 1 4 4 2 ATL_dmm4x4x2pf_armhf.c "R. Clint Whaley" \ ++gcc ++-x assembler-with-cpp -mfpu=vfpv3 -march=armv7-a + # NB = 80 and NB = 120 are to force UltraSparc to try NB > L1 Cache, + # needed for optimal performance on Ultra2 and Ultra4, respectively +diff -ru ATLAS/tune/blas/gemm/CASES/scases.flg ATLAS-3.8.4-arm/tune/blas/gemm/CASES/scases.flg +--- ATLAS/tune/blas/gemm/CASES/scases.flg 2011-05-14 19:34:10.000000000 +0200 ++++ ATLAS-3.8.4-arm/tune/blas/gemm/CASES/scases.flg 2012-06-03 14:25:48.000000000 +0200 +@@ -1,5 +1,5 @@ + "" +-22 ++27 + 304 192 4 3 8 0 4 4 3 8 ATL_mm4x3x8p.c "R. Clint Whaley" \ + gcc + -mcpu=ultrasparc -mtune=ultrasparc -fomit-frame-pointer -O +@@ -58,3 +58,18 @@ + gcc + -x assembler-with-cpp -mips4 + 332 192 8 2 4 1 0 8 2 4 ATL_smm8x2x4_av.c "IBM" ++333 448 4 4 2 1 1 4 4 2 ATL_smm4x4x2pf_arm.c "R. Clint Whaley" \ ++gcc ++-x assembler-with-cpp -mfpu=vfpv3 -march=armv7-a ++334 448 4 4 2 1 1 4 4 2 ATL_smm4x4x2dld_arm.c "R. Clint Whaley" \ ++gcc ++-x assembler-with-cpp -mfpu=vfpv3 -march=armv7-a ++335 448 4 4 2 1 1 4 4 2 ATL_smm4x4x2pf_armhf.c "R. Clint Whaley" \ ++gcc ++-x assembler-with-cpp -mfpu=vfpv3 -march=armv7-a ++336 448 4 4 2 1 1 4 4 2 ATL_smm4x4x2dld_armhf.c "R. Clint Whaley" \ ++gcc ++-x assembler-with-cpp -mfpu=vfpv3 -march=armv7-a ++337 480 4 4 4 1 1 4 4 4 ATL_smm4x4x4p_neon.c "Vesperix Corporation" \ ++gcc ++-march=armv7-a -mfpu=neon -O2 +diff -ru ATLAS/tune/blas/gemm/CASES/zcases.flg ATLAS-3.8.4-arm/tune/blas/gemm/CASES/zcases.flg +--- ATLAS/tune/blas/gemm/CASES/zcases.flg 2011-05-14 19:34:10.000000000 +0200 ++++ ATLAS-3.8.4-arm/tune/blas/gemm/CASES/zcases.flg 2012-06-03 14:23:36.000000000 +0200 +@@ -1,5 +1,5 @@ + "" +-30 ++32 + 306 192 4 3 8 0 4 4 3 8 ATL_mm4x3x8p.c "R. Clint Whaley" \ + gcc + -mcpu=ultrasparc -mtune=ultrasparc -fomit-frame-pointer -O -fno-schedule-insns -fno-schedule-insns2 +@@ -82,6 +82,11 @@ + 338 192 8 4 2 1 0 8 4 2 ATL_dmm8x4x2_vsx.c "IBM" \ + gcc + -O3 -mvsx +- ++339 448 4 4 2 1 1 4 4 2 ATL_dmm4x4x2pf_arm.c "R. Clint Whaley" \ ++gcc ++-x assembler-with-cpp -mfpu=vfpv3 -march=armv7-a ++340 448 4 4 2 1 1 4 4 2 ATL_dmm4x4x2pf_armhf.c "R. Clint Whaley" \ ++gcc ++-x assembler-with-cpp -mfpu=vfpv3 -march=armv7-a + # NB = 80 and NB = 120 are to force UltraSparc to try NB > L1 Cache, + # needed for optimal performance on Ultra2 and Ultra4, respectively +diff -ru ATLAS/tune/sysinfo/ATL_cputime.c ATLAS-3.8.4-arm/tune/sysinfo/ATL_cputime.c +--- ATLAS/tune/sysinfo/ATL_cputime.c 2011-05-14 19:34:09.000000000 +0200 ++++ ATLAS-3.8.4-arm/tune/sysinfo/ATL_cputime.c 2012-05-05 18:16:58.000000000 +0200 +@@ -48,6 +48,26 @@ + t0 = clock(); + return(0.0); + } ++#elif defined(POSIX_HR) /* use the POSIX HR timers */ ++ #include ++ double ATL_cputime(void) ++ { ++ struct timespec ts; ++ static double t0; ++ double res; ++ static int INIT = 0; ++ ++ if (INIT) ++ { ++ clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &ts); ++ res = ts.tv_sec + 1.0e-9 * ts.tv_nsec; ++ return(res - t0); ++ } ++ clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&ts); ++ t0 = ts.tv_sec + 1.0e-9 * ts.tv_nsec; ++ INIT = 1; ++ return(0.0); ++ } + #elif defined(UseTimes) + #include + #include +diff -ru ATLAS/tune/sysinfo/ATL_walltime.c ATLAS-3.8.4-arm/tune/sysinfo/ATL_walltime.c +--- ATLAS/tune/sysinfo/ATL_walltime.c 2011-05-14 19:34:09.000000000 +0200 ++++ ATLAS-3.8.4-arm/tune/sysinfo/ATL_walltime.c 2012-05-05 18:23:20.000000000 +0200 +@@ -79,6 +79,26 @@ + myout = (myout<<32) | msout.LowPart; + return(myout*freqRecip); + } ++#elif defined(POSIX_HR) /* use the POSIX HR timers */ ++ #include ++ double ATL_cputime(void) ++ { ++ struct timespec ts; ++ static double t0; ++ double res; ++ static int INIT = 0; ++ ++ if (INIT) ++ { ++ clock_gettime(CLOCK_REALTIME, &ts); ++ res = ts.tv_sec + 1.0e-9 * ts.tv_nsec; ++ return(res - t0); ++ } ++ clock_gettime(CLOCK_REALTIME,&ts); ++ t0 = ts.tv_sec + 1.0e-9 * ts.tv_nsec; ++ INIT = 1; ++ return(0.0); ++ } + #elif defined(UseTimes) + #include + #include +@@ -97,6 +117,26 @@ + { + return(gethrtime()*1.0e-9); + } ++#elif defined(POSIX_HR) /* use the POSIX HR timers */ ++ #include ++ double ATL_walltime(void) ++ { ++ struct timespec ts; ++ static double t0; ++ double res; ++ static int INIT = 0; ++ ++ if (INIT) ++ { ++ clock_gettime(CLOCK_REALTIME, &ts); ++ res = ts.tv_sec + 1.0e-9 * ts.tv_nsec; ++ return(res - t0); ++ } ++ clock_gettime(CLOCK_REALTIME, &ts); ++ t0 = ts.tv_sec + 1.0e-9 * ts.tv_nsec; ++ INIT = 1; ++ return(0.0); ++ } + /* + * Without gcc, I know no standard Windows wall-timer, so use cputime + */ diff --git a/libatlas-3.8.4-fix-melf-link-flags.patch b/libatlas-3.8.4-fix-melf-link-flags.patch new file mode 100644 index 0000000..52feec7 --- /dev/null +++ b/libatlas-3.8.4-fix-melf-link-flags.patch @@ -0,0 +1,15 @@ +diff -up ATLAS/CONFIG/src/SpewMakeInc.c.melf ATLAS/CONFIG/src/SpewMakeInc.c +--- ATLAS/CONFIG/src/SpewMakeInc.c.melf 2011-05-14 11:33:24.000000000 -0600 ++++ ATLAS/CONFIG/src/SpewMakeInc.c 2012-08-09 10:52:28.051926489 -0600 +@@ -665,9 +665,9 @@ main(int nargs, char **args) + if (MachIsX86(mach)) + { + if (ptrbits == 32) +- fprintf(fpout, " -melf_i386"); ++ fprintf(fpout, " -Wl,-melf_i386"); + else if (ptrbits == 64) +- fprintf(fpout, " -melf_x86_64"); ++ fprintf(fpout, " -Wl,-melf_x86_64"); + if (OS == OSFreeBSD) + fprintf(fpout, "_fbsd"); + } diff --git a/libatlas-3.8.4-shared.patch b/libatlas-3.8.4-shared.patch new file mode 100644 index 0000000..ecc1a2c --- /dev/null +++ b/libatlas-3.8.4-shared.patch @@ -0,0 +1,111 @@ +--- ATLAS/makes/Make.lib 2009-02-18 19:47:36.000000000 +0100 ++++ ATLAS/makes/Make.lib-gil 2009-05-09 08:26:56.000000000 +0200 +@@ -3,6 +3,8 @@ + # + # override with libatlas.so only when atlas is built to one lib + # ++so_ver_major=3 ++so_ver = $(so_ver_major).0 + DYNlibs = liblapack.so libf77blas.so libcblas.so libatlas.so + PTDYNlibs = liblapack.so libptf77blas.so libptcblas.so libatlas.so + CDYNlibs = liblapack.so libcblas.so libatlas.so +@@ -32,38 +34,78 @@ + mv $(tarnam).tar.gz $(tarnam).tgz + + ptshared : +- - rm -f libatlas.so liblapack.so +- $(MAKE) libatlas.so liblapack.so libptf77blas.so libf77blas.so \ +- libptcblas.so libcblas.so liblapack.so ++ - rm -f libatlas.so* liblapack.so* \ ++ lib*blas.so* libclapack.so* ++ $(MAKE) libatlas.so libcblas.so libptf77blas.so libf77blas.so \ ++ libptcblas.so liblapack.so libclapack.so + shared : +- - rm -f libatlas.so liblapack.so +- $(MAKE) libatlas.so liblapack.so libf77blas.so libcblas.so liblapack.so ++ - rm -f libatlas.so liblapack.so \ ++ libatlas.so.$(so_ver) liblapack.so.$(so_ver) ++ $(MAKE) libatlas.so libcblas.so libf77blas.so liblapack.so libclapack.so + cptshared : +- - rm -f libatlas.so libclapack.so +- $(MAKE) libatlas.so libclapack.so libptcblas.so libcblas.so ++ - rm -f libatlas.so libclapack.so \ ++ libatlas.so.$(so_ver) libclapack.so.$(so_ver) ++ $(MAKE) libatlas.so libptcblas.so libcblas.so libclapack.so + cshared : +- - rm -f libatlas.so libclapack.so +- $(MAKE) libatlas.so libclapack.so libcblas.so ++ - rm -f libatlas.so libclapack.so \ ++ libatlas.so.$(so_ver) libclapack.so.$(so_ver) ++ $(MAKE) libatlas.so libcblas.so libclapack.so + + libatlas.so : libatlas.a +- ld $(LDFLAGS) -shared -soname libatlas.so -o libatlas.so \ +- --whole-archive libatlas.a --no-whole-archive -lc $(LIBS) ++ mkdir static_libs ; cd static_libs ; ar x ../libatlas.a ; cd ../ ++ gcc $(LDFLAGS) -shared -Wl,-soname=libatlas.so.$(so_ver_major) \ ++ -o libatlas.so.$(so_ver) static_libs/*.o -lc $(LIBS) ++ rm -rf static_libs ++ ln -sf ./libatlas.so.$(so_ver) libatlas.so.$(so_ver_major) ++ ln -sf ./libatlas.so.$(so_ver) libatlas.so + liblapack.so : liblapack.a +- ld $(LDFLAGS) -shared -soname $@ -o $@ --whole-archive \ +- liblapack.a --no-whole-archive $(F77SYSLIB) ++ mkdir static_libs ; cd static_libs ; ar x ../liblapack.a ; cd ../ ++ gcc $(LDFLAGS) -shared -Wl,-soname=liblapack.so.$(so_ver_major) \ ++ -o liblapack.so.$(so_ver) static_libs/*.o $(F77SYSLIB) \ ++ libf77blas.so.$(so_ver_major) libcblas.so.$(so_ver_major) ++ rm -rf static_libs ++ ln -sf ./liblapack.so.$(so_ver) liblapack.so.$(so_ver_major) ++ ln -sf ./liblapack.so.$(so_ver) liblapack.so + libclapack.so : libclapack.a +- ld $(LDFLAGS) -shared -soname liblapack.so -o liblapack.so \ +- --whole-archive libclapack.a ++ mkdir static_libs ; cd static_libs ; ar x ../libclapack.a ; cd ../ ++ gcc $(LDFLAGS) -shared -Wl,-soname=libclapack.so.$(so_ver_major) \ ++ -o libclapack.so.$(so_ver) static_libs/*.o \ ++ libcblas.so.$(so_ver_major) -lc $(LIBS) ++ rm -rf static_libs ++ ln -sf ./libclapack.so.$(so_ver) libclapack.so.$(so_ver_major) ++ ln -sf ./libclapack.so.$(so_ver) libclapack.so + libptf77blas.so : libptf77blas.a +- ld $(LDFLAGS) -shared -soname $@ -o $@ --whole-archive libptf77blas.a \ +- --no-whole-archive $(F77SYSLIB) ++ mkdir static_libs ; cd static_libs ; ar x ../libptf77blas.a ; cd ../ ++ gcc $(LDFLAGS) -shared -Wl,-soname=libptf77blas.so.$(so_ver_major) \ ++ -o libptf77blas.so.$(so_ver) static_libs/*.o \ ++ libatlas.so.$(so_ver) $(F77SYSLIB) ++ rm -rf static_libs ++ ln -sf ./libptf77blas.so.$(so_ver) libptf77blas.so.$(so_ver_major) ++ ln -sf ./libptf77blas.so.$(so_ver) libptf77blas.so + libf77blas.so : libf77blas.a +- ld $(LDFLAGS) -shared -soname $@ -o $@ --whole-archive libf77blas.a \ +- --no-whole-archive $(F77SYSLIB) ++ mkdir static_libs ; cd static_libs ; ar x ../libf77blas.a ; cd ../ ++ gcc $(LDFLAGS) -shared -Wl,-soname=libf77blas.so.$(so_ver_major) \ ++ -o libf77blas.so.$(so_ver) static_libs/*.o \ ++ libatlas.so.$(so_ver) $(F77SYSLIB) ++ rm -rf static_libs ++ ln -sf ./libf77blas.so.$(so_ver) libf77blas.so.$(so_ver_major) ++ ln -sf ./libf77blas.so.$(so_ver) libf77blas.so + libptcblas.so : libptcblas.a +- ld $(LDFLAGS) -shared -soname $@ -o $@ --whole-archive libptcblas.a ++ mkdir static_libs ; cd static_libs ; ar x ../libptcblas.a ; cd ../ ++ gcc $(LDFLAGS) -shared -Wl,-soname=libptcblas.so.$(so_ver_major) \ ++ -o libptcblas.so.$(so_ver) static_libs/*.o \ ++ libatlas.so.$(so_ver) -lc $(LIBS) ++ rm -rf static_libs ++ ln -sf ./libptcblas.so.$(so_ver) libptcblas.so.$(so_ver_major) ++ ln -sf ./libptcblas.so.$(so_ver) libptcblas.so + libcblas.so : libcblas.a +- ld $(LDFLAGS) -shared -soname $@ -o $@ --whole-archive libcblas.a ++ mkdir static_libs ; cd static_libs ; ar x ../libcblas.a ; cd ../ ++ gcc $(LDFLAGS) -shared -Wl,-soname=libcblas.so.$(so_ver_major) \ ++ -o libcblas.so.$(so_ver) static_libs/*.o \ ++ libatlas.so.$(so_ver) -lc $(LIBS) ++ rm -rf static_libs ++ ln -sf ./libcblas.so.$(so_ver) libcblas.so.$(so_ver_major) ++ ln -sf ./libcblas.so.$(so_ver) libcblas.so + # + # Builds one shared lib from all ATLAS files + # diff --git a/libatlas.spec b/libatlas.spec new file mode 100644 index 0000000..f9132e4 --- /dev/null +++ b/libatlas.spec @@ -0,0 +1,565 @@ +%define major %(echo %version | cut -d. -f 1) +%ifarch arm +%define enable_native_atlas 0 +%else +%define enable_native_atlas 1 +%endif + +%if %enable_native_atlas +%ifarch %ix86 +%define types base 3dnow sse sse2 sse3 +%define mode 32 +%define pr_sse2 35 +%endif +%ifarch x86_64 +%define types base sse2 +%define mode 64 +%define pr_sse2 63 +%endif +%else +%ifarch %ix86 arm +%define types base +%define mode 32 +%endif +%ifarch x86_64 +%define types base +%define mode 64 +%endif +%endif + +%define pr_base 32 +%define pr_3dnow 33 +%define pr_sse 34 +%define pr_sse3 36 + +Name: libatlas +Version: 3.8.4 +Release: 3mamba +Summary: ATLAS - Automatically Tuned Linear Algebra Software +Group: System/Libraries +Vendor: openmamba +Distribution: openmamba +Packager: Silvan Calarco +URL: http://math-atlas.sourceforge.net/ +Source0: http://downloads.sourceforge.net/project/math-atlas/Stable/%{version}/atlas%{version}.tar.bz2 +Source1: ATLAS-README +# http://sourceforge.net/cvs/?group_id=23725 +Source2: PPRO32.tgz +Source3: K7323DNow.tgz +Source4: USII64.tgz +Source5: USII32.tgz +Patch0: libatlas-3.8.4-shared.patch +Patch1: libatlas-3.8.4-fix-melf-link-flags.patch +# ARM patch diffed from: +# http://www.vesperix.com/arm/atlas-arm/source/atlas-%{version}-arm.tar.gz +Patch2: atlas-3.8.4-arm.patch +License: BSD +## AUTOBUILDREQ-BEGIN +BuildRequires: gcc-fortran +BuildRequires: glibc-devel +## AUTOBUILDREQ-END +BuildRequires: libblas-devel >= 3.4.2-3mamba +BuildRequires: liblapack-devel >= 3.4.2-5mamba +BuildRequires: libxblas-devel +BuildRequires: libgomp-devel +#ExclusiveArch: ix86 amd64 x86_64 +BuildRoot: %{_tmppath}/%{name}-%{version}-root + +%description +The ATLAS (Automatically Tuned Linear Algebra Software) project is an ongoing research effort focusing on applying empirical techniques in order to provide portable performance. At present, it provides C and Fortran77 interfaces to a portably efficient BLAS implementation, as well as a few routines from LAPACK. + +%package devel +Group: Development/Libraries +Summary: Development libraries for ATLAS +Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release} +Requires: chkconfig + +%description devel +ATLAS - Automatically Tuned Linear Algebra Software. +This package contains the libraries and headers for development with ATLAS. + +%if %enable_native_atlas + +%ifarch x86_64 + +%package sse2 +Group: System/Libraries +Summary: ATLAS libraries for SSE2 extensions + +%description sse2 +ATLAS - Automatically Tuned Linear Algebra Software. +This package contains the ATLAS libraries compiled with optimizations for the SSE2 extensions to the x86_64 architecture. + +%package sse2-devel +Group: Development/Libraries +Summary: Development libraries for ATLAS with SSE2 extensions +Requires: %{name}-sse2 = %{?epoch:%epoch:}%{version}-%{release} +Requires: chkconfig + +%description sse2-devel +This package contains shared and static versions of the ATLAS libraries compiled with optimizations for the SSE2 extensions to the x86_64 architecture. + +%endif + +%ifarch %ix86 +%package 3dnow +Group: System/Libraries +Summary: ATLAS libraries for 3DNow extensions + +%description 3dnow +ATLAS - Automatically Tuned Linear Algebra Software. +This package contains the ATLAS libraries compiled with optimizations for the 3DNow extension to the ix86 architecture. + +%package 3dnow-devel +Group: Development/Libraries +Summary: Development libraries for ATLAS with 3DNow extensions +Requires: %{name}-3dnow = %{version}-%{release} +Requires: chkconfig + +%description 3dnow-devel +ATLAS - Automatically Tuned Linear Algebra Software. +This package contains headers and shared versions of the ATLAS libraries compiled with optimizations for the 3DNow extensions to the ix86 architecture. + +%package sse +Group: System/Libraries +Summary: ATLAS libraries for SSE extensions + +%description sse +ATLAS - Automatically Tuned Linear Algebra Software. +This package contains the ATLAS libraries compiled with optimizations for the SSE(1) extensions to the ix86 architecture. + +%package sse-devel +Group: Development/Libraries +Summary: Development libraries for ATLAS with SSE extensions +Requires: %{name}-sse = %{version}-%{release} +Requires: chkconfig + +%description sse-devel +ATLAS - Automatically Tuned Linear Algebra Software. +This package contains headers and shared versions of the ATLAS libraries compiled with optimizations for the SSE(1) extensions to the ix86 architecture. + +%package sse2 +Group: System/Libraries +Summary: ATLAS libraries for SSE2 extensions + +%description sse2 +ATLAS - Automatically Tuned Linear Algebra Software. +This package contains ATLAS shared libraries compiled with optimizations for the SSE2 extensions to the ix86 architecture. + +%package sse2-devel +Group: Development/Libraries +Summary: Development libraries for ATLAS with SSE2 extensions +Requires: %{name}-sse2 = %{?epoch:%epoch:}%{version}-%{release} +Requires: chkconfig + +%description sse2-devel +ATLAS - Automatically Tuned Linear Algebra Software. +This package contains ATLAS shared libraries compiled with optimizations for the SSE2 extensions to the ix86 architecture. + +%package sse3 +Group: System/Libraries +Summary: ATLAS libraries for SSE3 extensions + +%description sse3 +ATLAS - Automatically Tuned Linear Algebra Software. +This package contains the ATLAS libraries compiled with optimizations for the SSE3. + +%package sse3-devel +Group: Development/Libraries +Summary: Development libraries for ATLAS with SSE3 extensions +Requires: %{name}-sse3 = %{?epoch:%epoch:}%{version}-%{release} +Requires: chkconfig + +%description sse3-devel +ATLAS - Automatically Tuned Linear Algebra Software. +This package contains development libraries for ATLAS with SSE3 extensions to the ix86 architecture. + +%endif +%endif + +%package doc +Summary: Documentation for %{name} +Group: Documentation +Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release} + +%description doc +ATLAS - Automatically Tuned Linear Algebra Software. +This package contains the documentation for %{name}. + +%prep +%setup -q -c -a0 +#-D -T +#:<< __EOF +cd ATLAS +%patch0 -p1 +%patch1 -p1 +%ifarch arm +%patch2 -p1 +%endif + +cp %{SOURCE1} openmamba-README +sed -i "s|@VER_REL@|%{version}-%{release}|" openmamba-README + +%ifnarch arm +cp %{SOURCE2} CONFIG/ARCHS/ +cp %{SOURCE3} CONFIG/ARCHS/ +cp %{SOURCE4} CONFIG/ARCHS/ +cp %{SOURCE5} CONFIG/ARCHS/ +%endif + +%build +#:<< _EOF +cd ATLAS +for type in %{types}; do + if [ "$type" = "base" ]; then + libname=atlas + else + libname=atlas-${type} + fi + mkdir -p %{_arch}_${type} + cd %{_arch}_${type} + ../configure -b %{mode} -D c -DWALL -Fa alg '-g -Wa,--noexecstack -fPIC'\ +%ifarch arm + -Si archdef 0 -Si cputhrchk 0 \ +%endif + --prefix=%{buildroot}%{_prefix} \ + --incdir=%{buildroot}%{_includedir} \ + --libdir=%{buildroot}%{_libdir}/${libname} \ + --with-netlib-lapack=%{_libdir}/liblapack.a + sed -i "s|LDFLAGS = \(.*\)|LDFLAGS = \1 -Wl,--allow-multiple-definition -lxblas|" Make.inc +# -Si cputhrchk 0 + +%ifarch x86_64 + if [ "$type" = "sse2" ]; then + sed -i 's#ARCH =.*#ARCH = HAMMER64SSE2#' Make.inc + sed -i 's#-DATL_SSE3##' Make.inc + sed -i 's#-msse3#-msse2#' Make.inc + fi +%endif + +%ifarch %ix86 + if [ "$type" = "base" ]; then + sed -i 's#ARCH =.*#ARCH = PPRO32#' Make.inc + sed -i 's#-DATL_SSE3 -DATL_SSE2 -DATL_SSE1##' Make.inc + sed -i 's#-mfpmath=sse -msse3#-mfpmath=387#' Make.inc + elif [ "$type" = "3dnow" ]; then + sed -i 's#ARCH =.*#ARCH = K7323DNow#' Make.inc + sed -i 's#-DATL_SSE3 -DATL_SSE2 -DATL_SSE1##' Make.inc + sed -i 's#-mfpmath=sse -msse3#-mfpmath=387#' Make.inc + elif [ "$type" = "sse" ]; then + sed -i 's#ARCH =.*#ARCH = PIII32SSE1#' Make.inc + sed -i 's#-DATL_SSE3 -DATL_SSE2##' Make.inc + sed -i 's#-msse3#-msse#' Make.inc + elif [ "$type" = "sse2" ]; then + sed -i 's#ARCH =.*#ARCH = P432SSE2#' Make.inc + sed -i 's#-DATL_SSE3##' Make.inc + sed -i 's#-msse3#-msse2#' Make.inc + elif [ "$type" = "sse3" ]; then + sed -i 's#ARCH =.*#ARCH = P4E32SSE3#' Make.inc + fi +%endif + make build || make build || make build + cd lib + make shared +#%ifarch x86_64 +# LDFLAGS= +#%endif + + make ptshared +#%ifarch x86_64 +# LDFLAGS= +#%endif + + cd .. +done + +%install +[ "%{buildroot}" != / ] && rm -rf "%{buildroot}" +cd ATLAS +for type in %{types}; do + cd %{_arch}_${type} + make DESTDIR=%{buildroot} install + mv %{buildroot}%{_includedir}/atlas %{buildroot}%{_includedir}/atlas-%{_arch}-${type} + if [ "$type" = "base" ]; then + cp -pr lib/*.so* %{buildroot}%{_libdir}/atlas/ + rm -f %{buildroot}%{_libdir}/atlas/*.a + else + cp -pr lib/*.so* %{buildroot}%{_libdir}/atlas-${type}/ + rm -f %{buildroot}%{_libdir}/atlas-${type}/*.a + fi + cd .. + + mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d + if [ "$type" = "base" ]; then + echo "%{_libdir}/atlas" \ + > %{buildroot}%{_sysconfdir}/ld.so.conf.d/atlas-%{_arch}.conf + else + echo "%{_libdir}/atlas-${type}" \ + > %{buildroot}%{_sysconfdir}/ld.so.conf.d/atlas-%{_arch}-${type}.conf + fi +done +mkdir -p %{buildroot}%{_includedir}/atlas + +%clean +[ "%{buildroot}" != / ] && rm -rf "%{buildroot}" + +%post -p /sbin/ldconfig +%postun -p /sbin/ldconfig + +%post devel +if [ $1 -ge 1 ]; then + /usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \ + %{_includedir}/atlas-%{_arch}-base %{pr_base} +fi +exit 0 + +%preun devel +if [ $1 -eq 0 ]; then + /usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-base +fi +exit 0 + +%postun devel +if [ $1 -eq 0 ]; then + /usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-base +fi +: + +%if %enable_native_atlas + +%ifarch x86_64 + +%post sse2 -p /sbin/ldconfig + +%postun sse2 -p /sbin/ldconfig + +%post sse2-devel +if [ $1 -ge 1 ]; then + /usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \ + %{_includedir}/atlas-%{_arch}-sse2 %{pr_sse2} +fi +exit 0 + +%preun sse2-devel +if [ $1 -eq 0 ]; then + /usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-sse2 +fi +exit 0 + +%postun sse2-devel +if [ $1 -eq 0 ]; then + /usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-sse2 +fi +: + +%endif + +%ifarch %ix86 +%post 3dnow -p /sbin/ldconfig + +%postun 3dnow -p /sbin/ldconfig + +%post 3dnow-devel +if [ $1 -ge 1 ]; then + /usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \ + %{_includedir}/atlas-%{_arch}-3dnow %{pr_3dnow} +fi +exit 0 + +%preun 3dnow-devel +if [ $1 -eq 0 ]; then + /usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-3dnow +fi +exit 0 + +%postun 3dnow-devel +if [ $1 -eq 0 ]; then + /usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-3dnow +fi +: + +%post sse -p /sbin/ldconfig + +%postun sse -p /sbin/ldconfig + + +%post sse-devel +if [ $1 -ge 1 ]; then + /usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \ + %{_includedir}/atlas-%{_arch}-sse %{pr_sse} +fi +exit 0 + +%preun sse-devel +if [ $1 -eq 0 ]; then + /usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-sse +fi +exit 0 + +%postun sse-devel +if [ $1 -eq 0 ]; then + /usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-sse +fi +: + +%post sse2 -p /sbin/ldconfig + +%postun sse2 -p /sbin/ldconfig + +%post sse2-devel +if [ $1 -ge 1 ]; then + /usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \ + %{_includedir}/atlas-%{_arch}-sse2 %{pr_sse2} +fi +exit 0 + +%preun sse2-devel +if [ $1 -eq 0 ]; then + /usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-sse2 +fi +exit 0 + +%postun sse2-devel +if [ $1 -eq 0 ]; then + /usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-sse2 +fi +: + +%post sse3 -p /sbin/ldconfig + +%postun sse3 -p /sbin/ldconfig + +%post sse3-devel +if [ $1 -ge 1 ]; then + /usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \ + %{_includedir}/atlas-%{_arch}-sse3 %{pr_sse3} +fi +exit 0 + +%preun sse3-devel +if [ $1 -eq 0 ]; then + /usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-sse3 +fi +exit 0 + +%postun sse3-devel +if [ $1 -eq 0 ]; then + /usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-sse3 +fi +: + +%endif +%endif + +%files +%defattr(-,root,root) +%config(noreplace) %{_sysconfdir}/ld.so.conf.d/atlas-%{_arch}.conf +%dir %{_libdir}/atlas +%{_libdir}/atlas/*.so.* +%doc ATLAS/*README + +%files devel +%defattr(-,root,root) +%dir %{_includedir}/atlas-%{_arch}-base +%{_includedir}/atlas-%{_arch}-base/* +%{_includedir}/*.h +%{_libdir}/atlas/*.so + +%if %enable_native_atlas + +%ifarch x86_64 + +%files sse2 +%defattr(-,root,root) +%config(noreplace) %{_sysconfdir}/ld.so.conf.d/atlas-%{_arch}-sse2.conf +%dir %{_libdir}/atlas-sse2 +%{_libdir}/atlas-sse2/*.so.* + +%files sse2-devel +%defattr(-,root,root) +%{_libdir}/atlas-sse2/*.so +%{_includedir}/atlas-%{_arch}-sse2/ +%{_includedir}/*.h +%ghost %{_includedir}/atlas + +%endif + +%ifarch %ix86 + +%files 3dnow +%defattr(-,root,root) +%config(noreplace) %{_sysconfdir}/ld.so.conf.d/atlas-%{_arch}-3dnow.conf +%dir %{_libdir}/atlas-3dnow +%{_libdir}/atlas-3dnow/*.so.* + +%files 3dnow-devel +%defattr(-,root,root) +%{_libdir}/atlas-3dnow/*.so +%{_includedir}/atlas-%{_arch}-3dnow/ +%{_includedir}/*.h +%ghost %{_includedir}/atlas + +%files sse +%defattr(-,root,root) +%config(noreplace) %{_sysconfdir}/ld.so.conf.d/atlas-%{_arch}-sse.conf +%dir %{_libdir}/atlas-sse +%{_libdir}/atlas-sse/*.so.* + +%files sse-devel +%defattr(-,root,root) +%{_libdir}/atlas-sse/*.so +%{_includedir}/atlas-%{_arch}-sse/ +%{_includedir}/*.h +%ghost %{_includedir}/atlas + +%files sse2 +%defattr(-,root,root) +%config(noreplace) %{_sysconfdir}/ld.so.conf.d/atlas-%{_arch}-sse2.conf +%dir %{_libdir}/atlas-sse2 +%{_libdir}/atlas-sse2/*.so.* + +%files sse2-devel +%defattr(-,root,root) +%{_libdir}/atlas-sse2/*.so +%{_includedir}/atlas-%{_arch}-sse2/ +%{_includedir}/*.h +%ghost %{_includedir}/atlas + +%files sse3 +%defattr(-,root,root) +%config(noreplace) %{_sysconfdir}/ld.so.conf.d/atlas-%{_arch}-sse3.conf +%dir %{_libdir}/atlas-sse3 +%{_libdir}/atlas-sse3/*.so.* + +%files sse3-devel +%defattr(-,root,root) +%{_libdir}/atlas-sse3/*.so +%{_includedir}/atlas-%{_arch}-sse3/ +%{_includedir}/*.h +%ghost %{_includedir}/atlas + +%endif +%endif + +%files doc +%defattr(-,root,root) +%doc ATLAS/doc + +%changelog +* Mon Aug 26 2013 Silvan Calarco 3.8.4-3mamba +- rebuilt with liblapack-3.4.2-5mamba implementing extended precision routines (xblas) + +* Thu Aug 22 2013 Silvan Calarco 3.8.4-2mamba +- rebuild with liblapack-3.4.2-3mamba providing static library + +* Wed Aug 14 2013 Silvan Calarco 3.8.4-1mamba +- update to 3.8.4 + +* Wed Jan 05 2011 gil 3.8.3-2mamba +- rebuilt devel + +* Sat May 09 2009 gil 3.8.3-1mamba +- update to 3.8.3 + +* Sat Oct 04 2008 gil 3.8.2-1mamba +- package created by autospec \ No newline at end of file