Browse Source

lapack-3.7.1-3vl

git-svn-id: http://trac.vinelinux.org/repos/projects/specs@11727 ec354946-7b23-47d6-9f5a-488ba84defc7
ara_t 5 years ago
parent
commit
fb6e71d9d6
1 changed files with 659 additions and 58 deletions
  1. 659 58
      l/lapack/lapack-vl.spec

+ 659 - 58
l/lapack/lapack-vl.spec

@@ -1,11 +1,20 @@
-%global shortver       3
-%global mediumver      %{shortver}.5
+%global shortver  3
+%global mediumver %{shortver}.7
+
+# Build 64-bit interface binaries?
+%ifarch %{ix86}
+%global build64 0
+%endif
+%ifarch x86_64
+%global build64 1
+%endif
+
 
 Summary: Numerical linear algebra package libraries
 Summary(ja): 線形代数パッケージライブラリ
 Name:    lapack
-Version: %{mediumver}.0
-Release: 1%{?_dist_release}
+Version: %{mediumver}.1
+Release: 3%{?_dist_release}
 
 License: BSD
 Group:   System Environment/Libraries
@@ -15,14 +24,19 @@ Source0: http://www.netlib.org/lapack/lapack-%{version}.tgz
 Source1: http://www.netlib.org/lapack/manpages.tgz
 Source2: Makefile.blas
 Source3: Makefile.lapack
-Source4: http://www.netlib.org/lapack/lapackqref.ps
-Source5: http://www.netlib.org/blas/blasqr.ps
-Patch3:  lapack-3.4.0-make.inc.patch
-Patch4:  lapack-3.4.1-lapacke-shared.patch
-Patch5:  lapack-3.4.1-lapacke-disable-testing-functions.patch
-Patch6:  lapack-3.5.0-lapacke-matgenobj.patch
-Patch7:  lapack-3.5.0-lapacke-tmglib.patch
-Patch8:  lapack-3.5.0-R-blas-fixes.patch
+Source4: Makefile.cblas
+Source11: http://www.netlib.org/lapack/lapackqref.ps
+Source12: http://www.netlib.org/blas/blasqr.ps
+
+# Patch3:  lapack-3.4.0-make.inc.patch
+# Patch4:  lapack-3.4.1-lapacke-shared.patch
+# Patch5:  lapack-3.4.1-lapacke-disable-testing-functions.patch
+# Patch6:  lapack-3.5.0-lapacke-matgenobj.patch
+# Patch7:  lapack-3.5.0-lapacke-tmglib.patch
+# Patch8:  lapack-3.5.0-R-blas-fixes.patch
+Patch11: lapack-3.7.1-make.inc.patch
+Patch12: lapack-3.7.1-lapacke-shared.patch
+Patch13: lapack-3.7.1-lapacke-tmglib.patch
 
 BuildRoot:     %{_tmppath}/%{name}-%{version}-root
 BuildRequires: gcc-gfortran
@@ -32,21 +46,29 @@ Vendor:       Project Vine
 Distribution: Vine Linux
 Packager:     inagaki, kenta
 
+
 %description
-LAPACK (Linear Algebra PACKage) is a standard library for numerical 
-linear algebra. LAPACK provides routines for solving systems of 
-simultaneous linear equations, least-squares solutions of linear 
-systems of equations, eigenvalue problems, and singular value problems. 
-Associated matrix factorizations (LU, Cholesky, QR, SVD, Schur, and 
-generalized Schur) and related computations (i.e., reordering of 
-Schur factorizations and estimating condition numbers) are also 
-included. LAPACK can handle dense and banded matrices, but not general 
-sparse matrices. Similar functionality is provided for real and complex 
-matrices in both single and double precision. LAPACK is coded in 
+LAPACK (Linear Algebra PACKage) is a standard library for numerical
+linear algebra. LAPACK provides routines for solving systems of
+simultaneous linear equations, least-squares solutions of linear
+systems of equations, eigenvalue problems, and singular value problems.
+Associated matrix factorizations (LU, Cholesky, QR, SVD, Schur, and
+generalized Schur) and related computations (i.e., reordering of
+Schur factorizations and estimating condition numbers) are also
+included. LAPACK can handle dense and banded matrices, but not general
+sparse matrices. Similar functionality is provided for real and complex
+matrices in both single and double precision. LAPACK is coded in
 Fortran90 and built with gcc.
 
 %description -l ja
-LAPACK(Linear Algebra PACKage)は線形代数用数値計算の標準ライブラリです。LAPACKには、連立一次方程式、線形最小二乗解、固有値問題、特異値問題を解くためのルーチンがあります。関連する行列因子分解(LU、Cholesky、QR、SVD、Schur、一般化Schur)と、それに関連する計算処理 (つまりSchur分解の再配列およびコンディションナンバーの推定)も含まれます。LAPACKは密なbanded行列は処理できますが、一般的な疎行列は処理できません。同じ計算機能が、実行列および複素行列の単制度および倍精度で利用できます。LAPACKはFortran 90で記述され、gccでビルドされています。
+LAPACK(Linear Algebra PACKage)は線形代数用数値計算の標準ライブラリです。
+LAPACKには、連立一次方程式、線形最小二乗解、固有値問題、特異値問題を解く
+ためのルーチンがあります。関連する行列因子分解(LU、Cholesky、QR、SVD、
+Schur、一般化Schur)と、それに関連する計算処理 (つまりSchur分解の再配列
+およびコンディションナンバーの推定)も含まれます。
+LAPACKは密なbanded行列は処理できますが、一般的な疎行列は処理できません。
+同じ計算機能が、実行列および複素行列の単制度および倍精度で利用できます。
+LAPACKはFortran 90で記述され、gccでビルドされています。
 
 %package devel
 Summary:     LAPACK development libraries
@@ -83,7 +105,10 @@ BLAS (Basic Linear Algebra Subprograms) is a standard library which
 provides a number of basic algorithms for numerical algebra.
 
 %description -n blas -l ja
-BLAS(Basic Linear Algebra Subprograms)は数値代数計算の標準ライブラリです。BLASでは、線形代数計算における多くの基本アルゴリズムを利用できます。Blasの計算は高速で十分テストされているFORTRAN 90のプログラムで、gccでビルドされています。
+BLAS(Basic Linear Algebra Subprograms)は数値代数計算の標準ライブラリです。
+BLASでは、線形代数計算における多くの基本アルゴリズムを利用できます。
+Blasの計算は高速で十分テストされているFORTRAN 90のプログラムで、
+gccでビルドされています。
 
 %package -n blas-devel
 Summary:     BLAS development libraries
@@ -110,26 +135,103 @@ BLAS static libraries.
 %description -n blas-static -l ja
 BLAS の静的ライブラリです。
 
+
+%if %build64
+%package -n lapack64
+Summary: Numerical linear algebra package libraries
+Group: System Environment/Libraries
+Requires: blas64 = %{version}-%{release}
+
+%description -n lapack64
+LAPACK (Linear Algebra PACKage) is a standard library for numerical
+linear algebra. LAPACK provides routines for solving systems of
+simultaneous linear equations, least-squares solutions of linear
+systems of equations, eigenvalue problems, and singular value
+problems. Associated matrix factorizations (LU, Cholesky, QR, SVD,
+Schur, and generalized Schur) and related computations (i.e.,
+reordering of Schur factorizations and estimating condition numbers)
+are also included. LAPACK can handle dense and banded matrices, but
+not general sparse matrices. Similar functionality is provided for
+real and complex matrices in both single and double precision. LAPACK
+is coded in Fortran90 and built with gcc.
+This build has 64bit INTEGER support.
+
+%package -n lapack64-devel
+Summary: LAPACK development libraries (64bit INTEGER)
+Group: Development/Libraries
+Requires: lapack64 = %{version}-%{release}
+Requires: lapack-devel = %{version}-%{release}
+Requires: blas64-devel = %{version}-%{release}
+
+%description -n lapack64-devel
+LAPACK development libraries (shared, 64bit INTEGER).
+
+%package -n lapack64-static
+Summary: LAPACK static libraries (64bit INTEGER)
+Group: Development/Libraries
+Requires: lapack64-devel = %{version}-%{release}
+
+%description -n lapack64-static
+LAPACK static libraries (64bit INTEGER).
+
+%package -n blas64
+Summary: The Basic Linear Algebra Subprograms library (64bit INTEGER)
+Group: System Environment/Libraries
+
+%description -n blas64
+BLAS (Basic Linear Algebra Subprograms) is a standard library which
+provides a number of basic algorithms for numerical algebra. This build
+has 64bit INTEGER support.
+
+%package -n blas64-devel
+Summary: BLAS development libraries
+Group: Development/Libraries
+Requires: blas64 = %{version}-%{release}
+Requires: blas-devel = %{version}-%{release}
+Requires: gcc-gfortran
+
+%description -n blas64-devel
+BLAS development libraries (shared).
+
+%package -n blas64-static
+Summary: BLAS static libraries (64bit INTEGER)
+Group: Development/Libraries
+Requires: blas64-devel = %{version}-%{release}
+
+%description -n blas64-static
+BLAS static libraries (64bit INTEGER).
+%endif
+
+
 %prep
-%setup -q 
+%setup -q
 %setup -q -D -T -a1
-%patch3 -p1 -b .fedora
-%patch4 -p1 -b .shared
-%patch5 -p1 -b .disable-functions
-%patch6 -p1 -b .matgenobj
-%patch7 -p1 -b .tmglib
-%patch8 -p1 -b .R
+# %patch3 -p1 -b .fedora
+# %patch4 -p1 -b .shared
+# %patch5 -p1 -b .disable-functions
+# %patch6 -p1 -b .matgenobj
+# %patch7 -p1 -b .tmglib
+# %patch8 -p1 -b .R
+%patch11 -p1 -b .fedora
+%patch12 -p1 -b .shared
+%patch13 -p1 -b .tmglib
 
 cp -f INSTALL/make.inc.gfortran make.inc
 cp -f %{SOURCE2} BLAS/SRC/Makefile
 cp -f %{SOURCE3} SRC/Makefile
+cp -f %{SOURCE4} CBLAS/src/Makefile
 
 sed -i "s|@SHORTVER@|%{shortver}|g" BLAS/SRC/Makefile
 sed -i "s|@SHORTVER@|%{shortver}|g" SRC/Makefile
-sed -i "s|@SHORTVER@|%{shortver}|g" lapacke/Makefile
+sed -i "s|@SHORTVER@|%{shortver}|g" LAPACKE/Makefile
+sed -i "s|@SHORTVER@|%{shortver}|g" CBLAS/src/Makefile
 sed -i "s|@LONGVER@|%{version}|g" BLAS/SRC/Makefile
 sed -i "s|@LONGVER@|%{version}|g" SRC/Makefile
-sed -i "s|@LONGVER@|%{version}|g" lapacke/Makefile
+sed -i "s|@LONGVER@|%{version}|g" LAPACKE/Makefile
+sed -i "s|@LONGVER@|%{version}|g" CBLAS/src/Makefile
+
+cp -p %{SOURCE11} lapackqref.ps
+cp -p %{SOURCE12} blasqr.ps
 
 %build
 RPM_OPT_FLAGS="$RPM_OPT_FLAGS -frecursive"
@@ -145,9 +247,47 @@ make clean
 FFLAGS="$RPM_OPT_O_FLAGS -fPIC" make dcabs1.o
 FFLAGS="$RPM_OPT_FLAGS -fPIC" CFLAGS="$RPM_OPT_FLAGS -fPIC" make shared
 cp libblas.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/
+
+%if %build64
+make clean
+FFLAGS="$RPM_OPT_O_FLAGS -fdefault-integer-8" make dcabs1.o
+SYMBOLPREFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS" make static
+cp libblas64_.a ${RPM_BUILD_DIR}/%{name}-%{version}/libblas64_.a
+make clean
+FFLAGS="$RPM_OPT_O_FLAGS -fPIC -fdefault-integer-8" make dcabs1.o
+SYMBOLPREFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -fPIC" LDFLAGS="%{build_ldflags}" make shared
+cp libblas64_.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/libblas64_.so.%{version}
+%endif
 popd
 
 ln -s libblas.so.%{version} libblas.so
+%if %build64
+ln -s libblas64_.so.%{version} libblas64_.so
+%endif
+
+# Build CBLAS
+cp CBLAS/include/cblas_mangling_with_flags.h.in CBLAS/include/cblas_mangling.h
+pushd CBLAS/src
+FFLAGS="$RPM_OPT_FLAGS" CFLAGS="$RPM_OPT_FLAGS -I../include" make static
+cp libcblas.a ${RPM_BUILD_DIR}/%{name}-%{version}/
+make clean
+FFLAGS="$RPM_OPT_FLAGS -fPIC" CFLAGS="$RPM_OPT_FLAGS -fPIC -I../include" make shared
+cp libcblas.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/
+
+%if %build64
+make clean
+SYMBOLPREFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -I../include" make static
+cp libcblas64_.a ${RPM_BUILD_DIR}/%{name}-%{version}/libcblas64_.a
+make clean
+SYMBOLPREFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -fPIC -I../include" make shared
+cp libcblas64_.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/libcblas64_.so.%{version}
+%endif
+popd
+
+ln -s libcblas.so.%{version} libcblas.so
+%if %build64
+ln -s libcblas64_.so.%{version} libcblas64_.so
+%endif
 
 # Build the static dlamch, dsecnd, lsame, second, slamch bits
 pushd INSTALL
@@ -173,6 +313,32 @@ make FFLAGS="$RPM_OPT_FLAGS -fPIC" CFLAGS="$RPM_OPT_FLAGS -fPIC" static
 cp liblapack.a ${RPM_BUILD_DIR}/%{name}-%{version}/liblapack_pic.a
 popd
 
+%if %build64
+# Build the static dlamch, dsecnd, lsame, second, slamch bits
+pushd INSTALL
+make NOOPT="$RPM_OPT_O_FLAGS -fdefault-integer-8" OPTS="$RPM_OPT_FLAGS -fdefault-integer-8"
+popd
+
+# Build the static lapack library
+pushd SRC
+make SYMBOLPREFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS" static
+cp liblapack64_.a ${RPM_BUILD_DIR}/%{name}-%{version}/liblapack64_.a
+popd
+
+# Build the static with pic dlamch, dsecnd, lsame, second, slamch bits (64bit INTEGER)
+pushd INSTALL
+make clean
+make NOOPT="$RPM_OPT_O_FLAGS -fPIC -fdefault-integer-8" OPTS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8"
+popd
+
+# Build the static with pic lapack library (64bit INTEGER)
+pushd SRC
+make clean
+make SYMBOLPREFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -fPIC" static
+cp liblapack64_.a ${RPM_BUILD_DIR}/%{name}-%{version}/liblapack64_pic.a
+popd
+%endif
+
 # Build the shared dlamch, dsecnd, lsame, second, slamch bits
 pushd INSTALL
 make clean
@@ -186,11 +352,29 @@ make FFLAGS="$RPM_OPT_FLAGS -fPIC" CFLAGS="$RPM_OPT_FLAGS -fPIC" shared
 cp liblapack.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/
 popd
 
+%if %build64
+# Build the shared dlamch, dsecnd, lsame, second, slamch bits
+pushd INSTALL
+make clean
+make NOOPT="$RPM_OPT_O_FLAGS -fPIC -fdefault-integer-8" OPTS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8"
+popd
+
+# Build the shared lapack library
+pushd SRC
+make clean
+make SYMBOLPREFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" shared
+cp liblapack64_.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/liblapack64_.so.%{version}
+popd
+%endif
+
 ln -s liblapack.so.%{version} liblapack.so
+%if %build64
+ln -s liblapack64_.so.%{version} liblapack64_.so
+%endif
 
 # Build the lapacke libraries
 make OPTS="$RPM_OPT_FLAGS -fPIC" tmglib
-pushd lapacke
+pushd LAPACKE
 make clean
 make CFLAGS="$RPM_OPT_FLAGS" lapacke
 make clean
@@ -198,19 +382,34 @@ make CFLAGS="$RPM_OPT_FLAGS -fPIC" shlib
 cp liblapacke.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/
 popd
 
-cp -p %{SOURCE4} lapackqref.ps
-cp -p %{SOURCE5} blasqr.ps
+ln -s liblapacke.so.%{version} liblapacke.so
+
 
 %install
 rm -fr $RPM_BUILD_ROOT
-mkdir -p $RPM_BUILD_ROOT%{_libdir}
+mkdir -p $RPM_BUILD_ROOT%{_libdir}/blas
+mkdir -p $RPM_BUILD_ROOT%{_libdir}/lapack
 mkdir -p $RPM_BUILD_ROOT%{_mandir}/man3
 chmod 755 $RPM_BUILD_ROOT%{_mandir}/man3
 
-for f in liblapack.so.%{version} libblas.so.%{version} liblapacke.so.%{version} libblas.a liblapack.a liblapack_pic.a liblapacke.a; do
-  cp -f $f $RPM_BUILD_ROOT%{_libdir}/$f
+for f in libblas.so.%{version} libblas.a libcblas.so.%{version} libcblas.a; do
+  cp -f $f $RPM_BUILD_ROOT%{_libdir}/blas/$f
+done
+
+for f in liblapack.so.%{version} liblapacke.so.%{version} liblapack.a liblapack_pic.a liblapacke.a; do
+  cp -f $f $RPM_BUILD_ROOT%{_libdir}/lapack/$f
+done
+
+%if %build64
+for f in libblas64_.so.%{version} libcblas64_.so.%{version} libblas64_.a libcblas64_.a; do
+  cp -f $f ${RPM_BUILD_ROOT}%{_libdir}/blas/$f
 done
 
+for f in liblapack64_.so.%{version} liblapack64_.a liblapack64_pic.a; do
+  cp -f $f ${RPM_BUILD_ROOT}%{_libdir}/lapack/$f
+done
+%endif
+
 # Manpages
 rm -rf manpages
 mkdir -p manpages
@@ -259,65 +458,467 @@ find manpages/man/man3 -type f -printf "%{_mandir}/man3/%f*\n" > lapackmans
 cp -f manpages/blas/man/man3/* $RPM_BUILD_ROOT%{_mandir}/man3
 cp -f manpages/man/man3/* $RPM_BUILD_ROOT%{_mandir}/man3
 
+# Cblas headers
+mkdir -p %{buildroot}%{_includedir}/cblas/
+cp -a CBLAS/include/*.h %{buildroot}%{_includedir}/cblas/
+
 # Lapacke headers
 mkdir -p $RPM_BUILD_ROOT%{_includedir}/lapacke/
-cp -a lapacke/include/*.h $RPM_BUILD_ROOT%{_includedir}/lapacke/
+cp -a LAPACKE/include/*.h $RPM_BUILD_ROOT%{_includedir}/lapacke/
 
-cd $RPM_BUILD_ROOT%{_libdir}
-ln -sf liblapack.so.%{version} liblapack.so
-ln -sf liblapack.so.%{version} liblapack.so.%{shortver}
-ln -sf liblapack.so.%{version} liblapack.so.%{mediumver}
+pushd $RPM_BUILD_ROOT%{_libdir}/blas
 ln -sf libblas.so.%{version} libblas.so
 ln -sf libblas.so.%{version} libblas.so.%{shortver}
 ln -sf libblas.so.%{version} libblas.so.%{mediumver}
+ln -sf libcblas.so.%{version} libcblas.so
+ln -sf libcblas.so.%{version} libcblas.so.%{shortver}
+ln -sf libcblas.so.%{version} libcblas.so.%{mediumver}
+%if %build64
+ln -sf libblas64_.so.%{version} libblas64_.so
+ln -sf libblas64_.so.%{version} libblas64_.so.%{shortver}
+ln -sf libblas64_.so.%{version} libblas64_.so.%{mediumver}
+ln -sf libcblas64_.so.%{version} libcblas64_.so
+ln -sf libcblas64_.so.%{version} libcblas64_.so.%{shortver}
+ln -sf libcblas64_.so.%{version} libcblas64_.so.%{mediumver}
+%endif
+popd
+
+pushd $RPM_BUILD_ROOT%{_libdir}/lapack
+ln -sf liblapack.so.%{version} liblapack.so
+ln -sf liblapack.so.%{version} liblapack.so.%{shortver}
+ln -sf liblapack.so.%{version} liblapack.so.%{mediumver}
 ln -sf liblapacke.so.%{version} liblapacke.so
 ln -sf liblapacke.so.%{version} liblapacke.so.%{shortver}
 ln -sf liblapacke.so.%{version} liblapacke.so.%{mediumver}
+%if %build64
+ln -sf liblapack64_.so.%{version} liblapack64_.so
+ln -sf liblapack64_.so.%{version} liblapack64_.so.%{shortver}
+ln -sf liblapack64_.so.%{version} liblapack64_.so.%{mediumver}
+%endif
+popd
+
+# pkgconfig
+mkdir -p %{buildroot}%{_libdir}/pkgconfig/
+
+# blas
+cp -a BLAS/blas.pc.in %{buildroot}%{_libdir}/pkgconfig/blas-netlib.pc
+sed -i 's|@CMAKE_INSTALL_FULL_LIBDIR@|%{_libdir}/blas|g' \
+    %{buildroot}%{_libdir}/pkgconfig/blas-netlib.pc
+sed -i 's|@CMAKE_INSTALL_FULL_INCLUDEDIR@|%{_includedir}|g' \
+    %{buildroot}%{_libdir}/pkgconfig/blas-netlib.pc
+sed -i 's|@LAPACK_VERSION@|%{version}|g' \
+    %{buildroot}%{_libdir}/pkgconfig/blas-netlib.pc
+
+%if %build64
+cp -a %{buildroot}%{_libdir}/pkgconfig/blas-netlib.pc \
+   %{buildroot}%{_libdir}/pkgconfig/blas64-netlib.pc
+sed -i 's|-lblas|-lblas64_|g' \
+    %{buildroot}%{_libdir}/pkgconfig/blas64-netlib.pc
+%endif
+
+# cblas
+cp -a CBLAS/cblas.pc.in %{buildroot}%{_libdir}/pkgconfig/cblas-netlib.pc
+sed -i 's|@CMAKE_INSTALL_FULL_LIBDIR@|%{_libdir}/blas|g' \
+    %{buildroot}%{_libdir}/pkgconfig/cblas-netlib.pc
+sed -i 's|@CMAKE_INSTALL_FULL_INCLUDEDIR@|%{_includedir}/cblas|g' \
+    %{buildroot}%{_libdir}/pkgconfig/cblas-netlib.pc
+sed -i 's|@LAPACK_VERSION@|%{version}|g' \
+    %{buildroot}%{_libdir}/pkgconfig/cblas-netlib.pc
+
+%if %build64
+cp -a %{buildroot}%{_libdir}/pkgconfig/cblas-netlib.pc \
+   %{buildroot}%{_libdir}/pkgconfig/cblas64-netlib.pc
+sed -i 's|-lcblas|-lcblas64_|g' \
+    %{buildroot}%{_libdir}/pkgconfig/cblas64-netlib.pc
+sed -i 's|Requires.private: blas|Requires.private: blas64|g' \
+    %{buildroot}%{_libdir}/pkgconfig/cblas64-netlib.pc
+%endif
+
+# lapack
+cp -a lapack.pc.in %{buildroot}%{_libdir}/pkgconfig/lapack-netlib.pc
+sed -i 's|@CMAKE_INSTALL_FULL_LIBDIR@|%{_libdir}/lapack|g' \
+    %{buildroot}%{_libdir}/pkgconfig/lapack-netlib.pc
+sed -i 's|@CMAKE_INSTALL_FULL_INCLUDEDIR@|%{_includedir}|g' \
+    %{buildroot}%{_libdir}/pkgconfig/lapack-netlib.pc
+sed -i 's|@LAPACK_VERSION@|%{version}|g' \
+    %{buildroot}%{_libdir}/pkgconfig/lapack-netlib.pc
+
+%if %build64
+cp -a %{buildroot}%{_libdir}/pkgconfig/lapack-netlib.pc \
+   %{buildroot}%{_libdir}/pkgconfig/lapack64-netlib.pc
+sed -i 's|-llapack|-llapack64_|g' \
+    %{buildroot}%{_libdir}/pkgconfig/lapack64-netlib.pc
+sed -i 's|blas|blas64|g' \
+    %{buildroot}%{_libdir}/pkgconfig/lapack64-netlib.pc
+%endif
+
+# lapacke
+cp -a LAPACKE/lapacke.pc.in %{buildroot}%{_libdir}/pkgconfig/lapacke-netlib.pc
+sed -i 's|@CMAKE_INSTALL_FULL_LIBDIR@|%{_libdir}/lapack|g' \
+    %{buildroot}%{_libdir}/pkgconfig/lapacke-netlib.pc
+sed -i 's|@CMAKE_INSTALL_FULL_INCLUDEDIR@|%{_includedir}/lapacke|g' \
+    %{buildroot}%{_libdir}/pkgconfig/lapacke-netlib.pc
+sed -i 's|@LAPACK_VERSION@|%{version}|g' \
+    %{buildroot}%{_libdir}/pkgconfig/lapacke-netlib.pc
 
 
-%post -p /sbin/ldconfig
+%clean
+rm -fr $RPM_BUILD_ROOT
+
+
+%post
+update-alternatives \
+    --install %{_libdir}/liblapack.so.3 liblapack.so.3 \
+              %{_libdir}/lapack/liblapack.so.3 10 \
+    --slave   %{_libdir}/liblapacke.so.3 liblapacke.so.3 \
+              %{_libdir}/lapack/liblapacke.so.3
+/sbin/ldconfig
+
+%preun
+if [ "$1" = "0" ]
+then
+    update-alternatives \
+        --remove liblapack.so.3 %{_libdir}/lapack/liblapack.so.3
+fi
 
 %postun -p /sbin/ldconfig
 
-%post -n blas -p /sbin/ldconfig
+%triggerpostun -- lapack < 3.7.1-2%{?_dist_release}
+update-alternatives \
+    --install %{_libdir}/liblapack.so.3 liblapack.so.3 \
+              %{_libdir}/lapack/liblapack.so.3 10 \
+    --slave   %{_libdir}/liblapacke.so.3 liblapacke.so.3 \
+              %{_libdir}/lapack/liblapacke.so.3
+/sbin/ldconfig
+
+
+%post devel
+update-alternatives \
+    --install %{_libdir}/liblapack.so liblapack.so \
+              %{_libdir}/lapack/liblapack.so 10 \
+    --slave   %{_libdir}/liblapacke.so liblapacke.so \
+              %{_libdir}/lapack/liblapacke.so \
+    --slave   %{_libdir}/pkgconfig/lapack.pc lapack.pc \
+              %{_libdir}/pkgconfig/lapack-netlib.pc \
+    --slave   %{_libdir}/pkgconfig/lapacke.pc lapacke.pc \
+              %{_libdir}/pkgconfig/lapacke-netlib.pc
+/sbin/ldconfig
+
+%preun devel
+if [ "$1" = "0" ]
+then
+    update-alternatives \
+        --remove liblapack.so %{_libdir}/lapack/liblapack.so
+fi
+
+%postun devel -p /sbin/ldconfig
+
+%triggerpostun devel -- lapack-devel < 3.7.1-2%{?_dist_release}
+update-alternatives \
+    --install %{_libdir}/liblapack.so liblapack.so \
+              %{_libdir}/lapack/liblapack.so 10 \
+    --slave   %{_libdir}/liblapacke.so liblapacke.so \
+              %{_libdir}/lapack/liblapacke.so \
+    --slave   %{_libdir}/pkgconfig/lapack.pc lapack.pc \
+              %{_libdir}/pkgconfig/lapack-netlib.pc \
+    --slave   %{_libdir}/pkgconfig/lapacke.pc lapacke.pc \
+              %{_libdir}/pkgconfig/lapacke-netlib.pc
+/sbin/ldconfig
+
+
+%post static
+update-alternatives \
+    --install %{_libdir}/liblapack.a liblapack.a \
+              %{_libdir}/lapack/liblapack.a 10 \
+    --slave   %{_libdir}/liblapacke.a liblapacke.a \
+              %{_libdir}/lapack/liblapacke.a
+
+%preun static
+if [ "$1" = "0" ]
+then
+    update-alternatives \
+        --remove liblapack.a %{_libdir}/lapack/liblapack.a
+fi
+
+%triggerpostun static -- lapack-static < 3.7.1-2%{?_dist_release}
+update-alternatives \
+    --install %{_libdir}/liblapack.a liblapack.a \
+              %{_libdir}/lapack/liblapack.a 10 \
+    --slave   %{_libdir}/liblapacke.a liblapacke.a \
+              %{_libdir}/lapack/liblapacke.a
+
+
+%post -n blas
+update-alternatives \
+    --install %{_libdir}/libblas.so.3 libblas.so.3 \
+              %{_libdir}/blas/libblas.so.3 10 \
+    --slave   %{_libdir}/libcblas.so.3 libcblas.so.3 \
+              %{_libdir}/blas/libcblas.so.3
+/sbin/ldconfig
+
+%preun -n blas
+if [ "$1" = "0" ]
+then
+    update-alternatives \
+        --remove libblas.so.3 %{_libdir}/blas/libblas.so.3
+fi
 
 %postun -n blas -p /sbin/ldconfig
 
-%clean
-rm -fr $RPM_BUILD_ROOT
+%triggerpostun -n blas -- blas < 3.7.1-2%{?_dist_release}
+update-alternatives \
+    --install %{_libdir}/libblas.so.3 libblas.so.3 \
+              %{_libdir}/blas/libblas.so.3 10 \
+    --slave   %{_libdir}/libcblas.so.3 libcblas.so.3 \
+              %{_libdir}/blas/libcblas.so.3
+/sbin/ldconfig
+
+
+%post -n blas-devel
+update-alternatives \
+    --install %{_libdir}/libblas.so libblas.so \
+              %{_libdir}/blas/libblas.so 10 \
+    --slave   %{_libdir}/libcblas.so libcblas.so \
+              %{_libdir}/blas/libcblas.so \
+    --slave   %{_libdir}/pkgconfig/blas.pc blas.pc \
+              %{_libdir}/pkgconfig/blas-netlib.pc \
+    --slave   %{_libdir}/pkgconfig/cblas.pc cblas.pc \
+              %{_libdir}/pkgconfig/cblas-netlib.pc
+/sbin/ldconfig
+
+%preun -n blas-devel
+if [ "$1" = "0" ]
+then
+    update-alternatives \
+        --remove libblas.so %{_libdir}/blas/libblas.so
+fi
+
+%postun -n blas-devel -p /sbin/ldconfig
+
+%triggerpostun -n blas-devel -- blas-devel < 3.7.1-2%{?_dist_release}
+update-alternatives \
+    --install %{_libdir}/libblas.so libblas.so \
+              %{_libdir}/blas/libblas.so 10 \
+    --slave   %{_libdir}/libcblas.so libcblas.so \
+              %{_libdir}/blas/libcblas.so \
+    --slave   %{_libdir}/pkgconfig/blas.pc blas.pc \
+              %{_libdir}/pkgconfig/blas-netlib.pc \
+    --slave   %{_libdir}/pkgconfig/cblas.pc cblas.pc \
+              %{_libdir}/pkgconfig/cblas-netlib.pc
+/sbin/ldconfig
+
+%post -n blas-static
+update-alternatives \
+    --install %{_libdir}/libblas.a libblas.a \
+              %{_libdir}/blas/libblas.a 10 \
+    --slave   %{_libdir}/libcblas.a libcblas.a \
+              %{_libdir}/blas/libcblas.a
+
+%preun -n blas-static
+if [ "$1" = "0" ]
+then
+    update-alternatives \
+        --remove libblas.a %{_libdir}/blas/libblas.a
+fi
+
+%triggerpostun -n blas-static -- blas-static < 3.7.1-2%{?_dist_release}
+update-alternatives \
+    --install %{_libdir}/libblas.a libblas.a \
+              %{_libdir}/blas/libblas.a 10 \
+    --slave   %{_libdir}/libcblas.a libcblas.a \
+              %{_libdir}/blas/libcblas.a
+
+
+%if %build64
+%post -n lapack64
+update-alternatives \
+    --install %{_libdir}/liblapack64_.so.3 liblapack64_.so.3 \
+              %{_libdir}/lapack/liblapack64_.so.3 10
+/sbin/ldconfig
+
+%preun -n lapack64
+if [ "$1" = "0" ]
+then
+    update-alternatives \
+        --remove liblapack64_.so.3 %{_libdir}/lapack/liblapack64_.so.3
+fi
+
+%postun -n lapack64 -p /sbin/ldconfig
+
+
+%post -n lapack64-devel
+update-alternatives \
+    --install %{_libdir}/liblapack64_.so liblapack64_.so \
+              %{_libdir}/lapack/liblapack64_.so 10 \
+    --slave   %{_libdir}/pkgconfig/lapack64.pc lapack64.pc \
+              %{_libdir}/pkgconfig/lapack64-netlib.pc
+/sbin/ldconfig
+
+%preun -n lapack64-devel
+if [ "$1" = "0" ]
+then
+    update-alternatives \
+        --remove liblapack64_.so %{_libdir}/lapack/liblapack64_.so
+fi
+
+%postun  -n lapack64-devel -p /sbin/ldconfig
+
+%post -n lapack64-static
+update-alternatives \
+    --install %{_libdir}/liblapack64_.a liblapack64_.a \
+              %{_libdir}/lapack/liblapack64_.a 10
+
+%preun -n lapack64-static
+if [ "$1" = "0" ]
+then
+    update-alternatives \
+        --remove liblapack64_.a %{_libdir}/lapack/liblapack64_.a
+fi
+
+
+%post -n blas64
+update-alternatives \
+    --install %{_libdir}/libblas64_.so.3 libblas64_.so.3 \
+              %{_libdir}/blas/libblas64_.so.3 10 \
+    --slave   %{_libdir}/libcblas64_.so.3 libcblas64_.so.3 \
+              %{_libdir}/blas/libcblas64_.so.3
+/sbin/ldconfig
+
+%preun -n blas64
+if [ "$1" = "0" ]
+then
+    update-alternatives \
+        --remove libblas64_.so.3 %{_libdir}/blas/libblas64_.so.3
+fi
+
+%postun -n blas64 -p /sbin/ldconfig
+
+
+%post -n blas64-devel
+update-alternatives \
+    --install %{_libdir}/libblas64_.so libblas64_.so \
+              %{_libdir}/blas/libblas64_.so 10 \
+    --slave   %{_libdir}/libcblas64_.so libcblas64_.so \
+              %{_libdir}/blas/libcblas64_.so \
+    --slave   %{_libdir}/pkgconfig/blas64.pc blas64.pc \
+              %{_libdir}/pkgconfig/blas64-netlib.pc \
+    --slave   %{_libdir}/pkgconfig/cblas64.pc cblas64.pc \
+              %{_libdir}/pkgconfig/cblas64-netlib.pc
+/sbin/ldconfig
+
+%preun -n blas64-devel
+if [ "$1" = "0" ]
+then
+    update-alternatives \
+        --remove libblas64_.so %{_libdir}/blas/libblas64_.so
+fi
+
+%postun -n blas64-devel -p /sbin/ldconfig
+
+%post -n blas64-static
+update-alternatives \
+    --install %{_libdir}/libblas64_.a libblas64_.a \
+              %{_libdir}/blas/libblas64_.a 10 \
+    --slave   %{_libdir}/libcblas64_.a libcblas64_.a \
+              %{_libdir}/blas/libcblas64_.a
+
+%preun -n blas64-static
+if [ "$1" = "0" ]
+then
+    update-alternatives \
+        --remove libblas64_.a %{_libdir}/blas/libblas64_.a
+fi
+%endif
+
 
 %files -f lapackmans
 %defattr(-,root,root)
-%doc README LICENSE lapackqref.ps
+%doc README.md LICENSE lapackqref.ps
 %dir %{_mandir}/man3/
-%{_libdir}/liblapack.so.*
-%{_libdir}/liblapacke.so.*
+%dir %{_libdir}/lapack
+%{_libdir}/lapack/liblapack.so.*
+%{_libdir}/lapack/liblapacke.so.*
 
 %files devel
 %defattr(-,root,root,-)
 %{_includedir}/lapacke/
-%{_libdir}/liblapack.so
-%{_libdir}/liblapacke.so
+%{_libdir}/lapack/liblapack.so
+%{_libdir}/lapack/liblapacke.so
+%{_libdir}/pkgconfig/lapack-netlib.pc
+%{_libdir}/pkgconfig/lapacke-netlib.pc
 
 %files static
 %defattr(-,root,root,-)
-%{_libdir}/liblapack*.a
+%{_libdir}/lapack/liblapack*.a
 
 %files -n blas -f blasmans
 %defattr(-,root,root)
 %doc blasqr.ps LICENSE
 %dir %{_mandir}/man3/
-%{_libdir}/libblas.so.*
+%dir %{_libdir}/blas
+%{_libdir}/blas/libblas.so.*
+%{_libdir}/blas/libcblas.so.*
 
 %files -n blas-devel
 %defattr(-,root,root,-)
-%{_libdir}/libblas.so
+%{_includedir}/cblas/
+%{_libdir}/blas/libblas.so
+%{_libdir}/blas/libcblas.so
+%{_libdir}/pkgconfig/blas-netlib.pc
+%{_libdir}/pkgconfig/cblas-netlib.pc
 
 %files -n blas-static
 %defattr(-,root,root,-)
-%{_libdir}/libblas*.a
+%{_libdir}/blas/libblas.a
+%{_libdir}/blas/libcblas.a
+
+%if %build64
+%files -n blas64
+%doc LICENSE
+%dir %{_libdir}/blas
+%{_libdir}/blas/libblas64_.so.*
+%{_libdir}/blas/libcblas64_.so.*
+
+%files -n blas64-devel
+%{_libdir}/blas/libblas64_.so
+%{_libdir}/blas/libcblas64_.so
+%{_libdir}/pkgconfig/blas64-netlib.pc
+%{_libdir}/pkgconfig/cblas64-netlib.pc
+
+%files -n blas64-static
+%{_libdir}/blas/libblas64_.a
+%{_libdir}/blas/libcblas64_.a
+
+%files -n lapack64
+%doc README.md LICENSE
+%dir %{_libdir}/lapack
+%{_libdir}/lapack/liblapack64_.so.*
+
+%files -n lapack64-devel
+%{_libdir}/lapack/liblapack64_.so
+%{_libdir}/pkgconfig/lapack64-netlib.pc
+
+%files -n lapack64-static
+%{_libdir}/lapack/liblapack64_.a
+%{_libdir}/lapack/liblapack64_pic.a
+%endif
+
 
 %changelog
+* Wed Jun 27 2018 Toshiaki Ara <ara_t@384.jp> 3.7.1-3
+- Build versions of the 64-bit libraries with an additional suffix
+
+* Mon Jun 25 2018 Toshiaki Ara <ara_t@384.jp> 3.7.1-2
+- build cblas
+- include pkgconfig files
+- adapt update-alternatives
+
+* Tue Jun 05 2018 Toshiaki Ara <ara_t@384.jp> 3.7.1-1
+- updated to 3.7.1
+- drop Patches 1 to 8
+- update Source2 and 3 (Makefile.{blas,lapack}) and add Patches 11-13
+  from Fedora package
+
 * Tue Jan 27 2015 Ryoichi INAGAKI <ryo1@toki.waseda.jp> 3.5.0-1
 - updated to 3.5.0
 - moved lapack and blas to System Environment/Libraries Group
@@ -356,7 +957,7 @@ rm -fr $RPM_BUILD_ROOT
   - nuke -man subpackages (#97506)
 - rebuilt with gfortran
 
-* Thu Dec 26 2003 Ryoichi INAGAKI <ryo1@bc.wakwak.com> 3.0-17vl3
+* Fri Dec 26 2003 Ryoichi INAGAKI <ryo1@bc.wakwak.com> 3.0-17vl3
 - rebuild with new toolchains
 
 * Mon Oct 13 2003 Ryoichi INAGAKI <ryo1@bc.wakwak.com> 3.0-17vl2