move to 64_ suffix and symbol mangling (bz1295965)

This commit is contained in:
Tom Callaway 2017-08-14 11:02:33 -04:00
parent 87d4de66ee
commit 24c2b26e99
3 changed files with 86 additions and 32 deletions

View File

@ -1,3 +1,9 @@
OBJCOPY = objcopy
ifndef SYMBOLPREFIX
SYMBOLPREFIX =
endif
clean:
rm -f *.o libblas.a libblas.so*
@ -50,8 +56,29 @@ OBJS= $(SBLAS1) $(SBLAS2) $(SBLAS3) $(DBLAS1) $(DBLAS2) $(DBLAS3) \
$(ALLBLAS)
static: $(OBJS)
ifeq "$(SYMBOLPREFIX)" ""
ar ruv libblas.a $(OBJS)
ranlib libblas.a
else
ar ruv $(SYMBOLPREFIX)libblas.a $(OBJS)
ranlib $(SYMBOLPREFIX)libblas.a
for i in `nm $(SYMBOLPREFIX)libblas.a |grep " T " | awk '{print $$3}'`; do echo "$$i" "64_$$i"; done > blas-static-prefix.def.dirty
sort -n blas-static-prefix.def.dirty | uniq > blas-static-prefix.def
$(OBJCOPY) --redefine-syms blas-static-prefix.def $(SYMBOLPREFIX)libblas.a $(SYMBOLPREFIX)libblas.a.fixed
rm -rf $(SYMBOLPREFIX)libblas.a
mv $(SYMBOLPREFIX)libblas.a.fixed $(SYMBOLPREFIX)libblas.a
endif
shared: $(OBJS)
ifeq "$(SYMBOLPREFIX)" ""
# No renaming needed
cc $(CFLAGS) -shared -Wl,-soname,libblas.so.@SHORTVER@ -o libblas.so.@LONGVER@ $(OBJS) -lm -lgfortran -lc
else
cc $(CFLAGS) -shared -Wl,-soname,$(SYMBOLPREFIX)libblas.so.@SHORTVER@ -o $(SYMBOLPREFIX)libblas.so.@LONGVER@ $(OBJS) -lm -lgfortran -lc
# generate a list of all symbols in shared library and rename with SYMBOLPREFIX
for i in `readelf -Ws $(SYMBOLPREFIX)libblas.so.@LONGVER@ | awk '{print $$8}' | grep -v GLIBC |grep -v GFORTRAN |grep -v "Name" `; do echo "$$i" "64_$$i"; done > blas-prefix.def.dirty
sort -n blas-prefix.def.dirty | uniq > blas-prefix.def
$(OBJCOPY) --redefine-syms blas-prefix.def $(SYMBOLPREFIX)libblas.so.@LONGVER@ $(SYMBOLPREFIX)libblas.so.@LONGVER@.fixed
rm -rf $(SYMBOLPREFIX)libblas.so.@LONGVER@
mv $(SYMBOLPREFIX)libblas.so.@LONGVER@.fixed $(SYMBOLPREFIX)libblas.so.@LONGVER@
endif

View File

@ -1,5 +1,11 @@
include ../make.inc
OBJCOPY = objcopy
ifndef SYMBOLPREFIX
SYMBOLPREFIX =
endif
clean:
rm -f *.o liblapack* DEPRECATED/*.o
@ -430,8 +436,29 @@ ALLXOBJ=$(SXLASRC) $(DXLASRC) $(CXLASRC) $(ZXLASRC) $(ALLXAUX)
endif
static: $(ALLOBJ) $(ALLXOBJ)
ifeq "$(SYMBOLPREFIX)" ""
ar ruv liblapack.a $(ALLOBJ) $(ALLXOBJ)
ranlib liblapack.a
else
ar ruv $(SYMBOLPREFIX)liblapack.a $(ALLOBJ) $(ALLXOBJ)
ranlib $(SYMBOLPREFIX)liblapack.a
for i in `nm $(SYMBOLPREFIX)liblapack.a |grep " T " | awk '{print $$3}'`; do echo "$$i" "64_$$i"; done > lapack-static-prefix.def.dirty
sort -n lapack-static-prefix.def.dirty | uniq > lapack-static-prefix.def
$(OBJCOPY) --redefine-syms lapack-static-prefix.def $(SYMBOLPREFIX)liblapack.a $(SYMBOLPREFIX)liblapack.a.fixed
rm -rf $(SYMBOLPREFIX)liblapack.a
mv $(SYMBOLPREFIX)liblapack.a.fixed $(SYMBOLPREFIX)liblapack.a
endif
shared: $(ALLOBJ) $(ALLXOBJ)
ifeq "$(SYMBOLPREFIX)" ""
# No renaming needed
cc $(CFLAGS) -shared -Wl,-soname,liblapack.so.@SHORTVER@ -o liblapack.so.@LONGVER@ $(ALLOBJ) $(ALLXOBJ) -L.. -lblas -lm -lgfortran -lc
else
cc $(CFLAGS) -shared -Wl,-soname,$(SYMBOLPREFIX)liblapack.so.@SHORTVER@ -o $(SYMBOLPREFIX)liblapack.so.@LONGVER@ $(ALLOBJ) $(ALLXOBJ) -L.. -lblas -lm -lgfortran -lc
# generate a list of all symbols in shared library and rename with SYMBOLPREFIX
for i in `readelf -Ws $(SYMBOLPREFIX)liblapack.so.@LONGVER@ | awk '{print $$8}' | grep -v GLIBC |grep -v GFORTRAN |grep -v "Name" `; do echo "$$i" "64_$$i"; done > lapack-prefix.def.dirty
sort -n lapack-prefix.def.dirty | uniq > lapack-prefix.def
$(OBJCOPY) --redefine-syms lapack-prefix.def $(SYMBOLPREFIX)liblapack.so.@LONGVER@ $(SYMBOLPREFIX)liblapack.so.@LONGVER@.fixed
rm -rf $(SYMBOLPREFIX)liblapack.so.@LONGVER@
mv $(SYMBOLPREFIX)liblapack.so.@LONGVER@.fixed $(SYMBOLPREFIX)liblapack.so.@LONGVER@
endif

View File

@ -10,7 +10,7 @@
Summary: Numerical linear algebra package libraries
Name: lapack
Version: %{mediumver}.1
Release: 3%{?dist}
Release: 4%{?dist}
License: BSD
Group: System Environment/Libraries
URL: http://www.netlib.org/lapack/
@ -25,7 +25,7 @@ Patch4: lapack-3.7.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.7.1-lapacke-tmglib.patch
BuildRequires: gcc-gfortran
BuildRequires: gcc-gfortran, gawk
Requires: blas%{?_isa} = %{version}-%{release}
%description
@ -189,20 +189,18 @@ cp libblas.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/
%if 0%{?arch64}
make clean
FFLAGS="$RPM_OPT_O_FLAGS -fdefault-integer-8" make dcabs1.o
FFLAGS="$RPM_OPT_FLAGS -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS" make static
cp libblas.a ${RPM_BUILD_DIR}/%{name}-%{version}/libblas64.a
SYMBOLPREFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS" make static
cp 64_libblas.a ${RPM_BUILD_DIR}/%{name}-%{version}/64_libblas.a
make clean
FFLAGS="$RPM_OPT_O_FLAGS -fPIC -fdefault-integer-8" make dcabs1.o
sed -i 's|-soname,libblas|-soname,libblas64|g' Makefile
FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -fPIC" make shared
sed -i 's|-soname,libblas64|-soname,libblas|g' Makefile
cp libblas.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/libblas64.so.%{version}
SYMBOLPREFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -fPIC" make shared
cp 64_libblas.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/64_libblas.so.%{version}
%endif
popd
ln -s libblas.so.%{version} libblas.so
%if 0%{?arch64}
ln -s libblas64.so.%{version} libblas64.so
ln -s 64_libblas.so.%{version} 64_libblas.so
%endif
# Build the static dlamch, dsecnd, lsame, second, slamch bits
@ -237,8 +235,8 @@ popd
# Build the static lapack library
pushd SRC
make FFLAGS="$RPM_OPT_FLAGS -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS" static
cp liblapack.a ${RPM_BUILD_DIR}/%{name}-%{version}/liblapack64.a
make SYMBOLPREFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS" static
cp 64_liblapack.a ${RPM_BUILD_DIR}/%{name}-%{version}/64_liblapack.a
popd
# Build the static with pic dlamch, dsecnd, lsame, second, slamch bits (64bit INTEGER)
@ -250,8 +248,8 @@ popd
# Build the static with pic lapack library (64bit INTEGER)
pushd SRC
make clean
make FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -fPIC" static
cp liblapack.a ${RPM_BUILD_DIR}/%{name}-%{version}/liblapack64_pic.a
make SYMBOLPREFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -fPIC" static
cp 64_liblapack.a ${RPM_BUILD_DIR}/%{name}-%{version}/64_liblapack_pic.a
popd
%endif
@ -278,16 +276,15 @@ popd
# Build the shared lapack library
pushd SRC
make clean
sed -i 's|-soname,liblapack|-soname,liblapack64|g' Makefile
make FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" shared
cp liblapack.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/liblapack64.so.%{version}
sed -i 's|-soname,liblapack64|-soname,liblapack|g' Makefile
make SYMBOLPREFIX="64_" FFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" CFLAGS="$RPM_OPT_FLAGS -fPIC -fdefault-integer-8" shared
cp 64_liblapack.so.%{version} ${RPM_BUILD_DIR}/%{name}-%{version}/64_liblapack.so.%{version}
popd
%endif
ln -s liblapack.so.%{version} liblapack.so
%if 0%{?arch64}
ln -s liblapack64.so.%{version} liblapack64.so
ln -s 64_liblapack.so.%{version} 64_liblapack.so
%endif
# Build the lapacke libraries
@ -313,7 +310,7 @@ for f in liblapack.so.%{version} libblas.so.%{version} liblapacke.so.%{version}
done
%if 0%{?arch64}
for f in liblapack64.so.%{version} libblas64.so.%{version} libblas64.a liblapack64.a liblapack64_pic.a; do
for f in 64_liblapack.so.%{version} 64_libblas.so.%{version} 64_libblas.a 64_liblapack.a 64_liblapack_pic.a; do
cp -f $f ${RPM_BUILD_ROOT}%{_libdir}/$f
done
%endif
@ -383,12 +380,12 @@ ln -sf liblapacke.so.%{version} liblapacke.so
ln -sf liblapacke.so.%{version} liblapacke.so.%{shortver}
ln -sf liblapacke.so.%{version} liblapacke.so.%{mediumver}
%if 0%{?arch64}
ln -sf liblapack64.so.%{version} liblapack64.so
ln -sf liblapack64.so.%{version} liblapack64.so.%{shortver}
ln -sf liblapack64.so.%{version} liblapack64.so.%{mediumver}
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 64_liblapack.so.%{version} 64_liblapack.so
ln -sf 64_liblapack.so.%{version} 64_liblapack.so.%{shortver}
ln -sf 64_liblapack.so.%{version} 64_liblapack.so.%{mediumver}
ln -sf 64_libblas.so.%{version} 64_libblas.so
ln -sf 64_libblas.so.%{version} 64_libblas.so.%{shortver}
ln -sf 64_libblas.so.%{version} 64_libblas.so.%{mediumver}
%endif
%post -p /sbin/ldconfig
@ -437,27 +434,30 @@ ln -sf libblas64.so.%{version} libblas64.so.%{mediumver}
%if 0%{?arch64}
%files -n blas64
%doc LICENSE
%{_libdir}/libblas64.so.*
%{_libdir}/64_libblas.so.*
%files -n blas64-devel
%{_libdir}/libblas64.so
%{_libdir}/64_libblas.so
%files -n blas64-static
%{_libdir}/libblas64.a
%{_libdir}/64_libblas.a
%files -n lapack64
%doc README.md LICENSE
%{_libdir}/liblapack64.so.*
%{_libdir}/64_liblapack.so.*
%files -n lapack64-devel
%{_libdir}/liblapack64.so
%{_libdir}/64_liblapack.so
%files -n lapack64-static
%{_libdir}/liblapack64.a
%{_libdir}/liblapack64_pic.a
%{_libdir}/64_liblapack.a
%{_libdir}/64_liblapack_pic.a
%endif
%changelog
* Fri Aug 11 2017 Tom Callaway <spot@fedoraproject.org> - 3.7.1-4
- move to 64_ suffix and symbol mangling (bz1295965)
* Thu Aug 10 2017 Tom Callaway <spot@fedoraproject.org> - 3.7.1-3
- include DSLASRC and ZCLASRC