Skip to content

Commit ec09fe9

Browse files
committed
LAPACK 3.11.0 - Continuation of #6553
1 parent 6a79681 commit ec09fe9

File tree

3 files changed

+42
-34
lines changed

3 files changed

+42
-34
lines changed

L/LAPACK/LAPACK/build_tarballs.jl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ include("../common.jl")
44

55
script = lapack_script(lapack32=false)
66

7+
products = [
8+
LibraryProduct(["liblapack"], :liblapack),
9+
]
10+
711
# Build the tarballs, and possibly a `build.jl` as well.
812
build_tarballs(ARGS, name, version, sources, script, platforms, products, dependencies;
913
julia_compat="1.9", preferred_gcc_version=v"6")
10-
11-
# Build trigger: 2

L/LAPACK/LAPACK32/build_tarballs.jl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ include("../common.jl")
44

55
script = lapack_script(lapack32=true)
66

7+
products = [
8+
LibraryProduct(["liblapack32"], :liblapack32),
9+
]
10+
711
# Build the tarballs, and possibly a `build.jl` as well.
812
build_tarballs(ARGS, name, version, sources, script, platforms, products, dependencies;
913
julia_compat="1.9", preferred_gcc_version=v"6")
10-
11-
# Build trigger: 2

L/LAPACK/common.jl

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
using BinaryBuilder
1+
using BinaryBuilder, Pkg
22

33
# LAPACK mirrors the OpenBLAS build, whereas LAPACK32 mirrors the OpenBLAS32 build.
44

5-
version = v"3.10.1"
5+
version = v"3.11.0"
66

77
# Collection of sources required to build lapack
88
sources = [
9-
GitSource("https://github.com/Reference-LAPACK/lapack.git",
10-
"32b062a33352e05771dcc01b981ebe961bf2e42f"),
9+
GitSource("https://github.com/Reference-LAPACK/lapack",
10+
"7866626840f5d5e7e27f027a55182da8b3303872"),
1111
]
1212

1313
# Bash recipe for building across all platforms
@@ -19,12 +19,6 @@ function lapack_script(;lapack32::Bool=false)
1919

2020
script *= raw"""
2121
cd $WORKSPACE/srcdir/lapack*
22-
if [[ "${target}" == *-mingw* ]]; then
23-
BLAS="blastrampoline-5"
24-
else
25-
BLAS="blastrampoline"
26-
fi
27-
2822
FFLAGS=(-cpp -ffixed-line-length-none -DUSE_ISNAN)
2923
if [[ ${nbits} == 64 ]] && [[ "${LAPACK32}" != "true" ]]; then
3024
FFLAGS="${FFLAGS} -fdefault-integer-8"
@@ -36,7 +30,7 @@ function lapack_script(;lapack32::Bool=false)
3630
CGBSV CGBSVX CGBTF2 CGBTRF CGBTRS CGEADD CGEBAK CGEBAL CGEBD2
3731
CGEBRD CGECON CGEEQU CGEEQUB CGEES CGEESX CGEEV CGEEVX CGEHD2
3832
CGEHRD CGEJSV CGELQ2 CGELQ CGELQF CGELQT3 CGELQT CGELS CGELSD
39-
CGELSS CGELSY CGEMLQ CGEMLQT CGEMM3M CGEMM CGEMQR CGEMQRT CGEMV
33+
CGELSS CGELSY CGELST CGEMLQ CGEMLQT CGEMM3M CGEMM CGEMQR CGEMQRT CGEMV
4034
CGEQL2 CGEQLF CGEQP3 CGEQR2 CGEQR2P CGEQR CGEQRF CGEQRFP CGEQRT2
4135
CGEQRT3 CGEQRT CGERC CGERFS CGERQ2 CGERQF CGERU CGESC2 CGESDD
4236
CGESV CGESVD CGESVDQ CGESVDX CGESVJ CGESVX CGETC2 CGETF2 CGETRF2
@@ -99,7 +93,7 @@ function lapack_script(;lapack32::Bool=false)
9993
DGBSV DGBSVX DGBTF2 DGBTRF DGBTRS DGEADD DGEBAK DGEBAL DGEBD2
10094
DGEBRD DGECON DGEEQU DGEEQUB DGEES DGEESX DGEEV DGEEVX DGEHD2
10195
DGEHRD DGEJSV DGELQ2 DGELQ DGELQF DGELQT3 DGELQT DGELS DGELSD
102-
DGELSS DGELSY DGEMLQ DGEMLQT DGEMM DGEMQR DGEMQRT DGEMV DGEQL2
96+
DGELSS DGELSY DGELST DGEMLQ DGEMLQT DGEMM DGEMQR DGEMQRT DGEMV DGEQL2
10397
DGEQLF DGEQP3 DGEQR2 DGEQR2P DGEQR DGEQRF DGEQRFP DGEQRT2
10498
DGEQRT3 DGEQRT DGER DGERFS DGERQ2 DGERQF DGESC2 DGESDD DGESV
10599
DGESVD DGESVDQ DGESVDX DGESVJ DGESVX DGETC2 DGETF2 DGETRF2
@@ -161,16 +155,13 @@ function lapack_script(;lapack32::Bool=false)
161155
IDMIN IEEECK ILACLC ILACLR ILADIAG ILADLC ILADLR ILAENV2STAGE
162156
ILAENV ILAPREC ILASLC ILASLR ILATRANS ILAUPLO ILAVER ILAZLC
163157
ILAZLR IPARAM2STAGE IPARMQ ISAMAX ISAMIN ISMAX ISMIN IZAMAX
164-
IZAMIN IZMAX1 LSAME LSAMEN OPENBLASGETCONFIG OPENBLASGETCORENAME
165-
OPENBLASGETNUMPROCS OPENBLASGETNUMPROCS OPENBLASGETNUMTHREADS
166-
OPENBLASGETNUMTHREADS OPENBLASGETPARALLEL OPENBLASGETPARALLEL
167-
OPENBLASSETNUMTHREADS OPENBLASSETNUMTHREADS SAMAX SAMIN SASUM
158+
IZAMIN IZMAX1 LSAME LSAMEN SAMAX SAMIN SASUM
168159
SAXPBY SAXPY SBBCSD SBDSDC SBDSQR SBDSVDX SCABS1 SCAMAX SCAMIN
169160
SCASUM SCNRM2 SCOMBSSQ SCOPY SCSUM1 SCSUM SDISNA SDOT SDSDOT
170161
SECOND SGBBRD SGBCON SGBEQU SGBEQUB SGBMV SGBRFS SGBSV SGBSVX
171162
SGBTF2 SGBTRF SGBTRS SGEADD SGEBAK SGEBAL SGEBD2 SGEBRD SGECON
172163
SGEEQU SGEEQUB SGEES SGEESX SGEEV SGEEVX SGEHD2 SGEHRD SGEJSV
173-
SGELQ2 SGELQ SGELQF SGELQT3 SGELQT SGELS SGELSD SGELSS SGELSY
164+
SGELQ2 SGELQ SGELQF SGELQT3 SGELQT SGELS SGELSD SGELSS SGELSY SGELST
174165
SGEMLQ SGEMLQT SGEMM SGEMQR SGEMQRT SGEMV SGEQL2 SGEQLF SGEQP3
175166
SGEQR2 SGEQR2P SGEQR SGEQRF SGEQRFP SGEQRT2 SGEQRT3 SGEQRT SGER
176167
SGERFS SGERQ2 SGERQF SGESC2 SGESDD SGESV SGESVD SGESVDQ SGESVDX
@@ -232,7 +223,7 @@ function lapack_script(;lapack32::Bool=false)
232223
ZDSCAL ZGBBRD ZGBCON ZGBEQU ZGBEQUB ZGBMV ZGBRFS ZGBSV ZGBSVX
233224
ZGBTF2 ZGBTRF ZGBTRS ZGEADD ZGEBAK ZGEBAL ZGEBD2 ZGEBRD ZGECON
234225
ZGEEQU ZGEEQUB ZGEES ZGEESX ZGEEV ZGEEVX ZGEHD2 ZGEHRD ZGEJSV
235-
ZGELQ2 ZGELQ ZGELQF ZGELQT3 ZGELQT ZGELS ZGELSD ZGELSS ZGELSY
226+
ZGELQ2 ZGELQ ZGELQF ZGELQT3 ZGELQT ZGELS ZGELSD ZGELSS ZGELSY ZGELST
236227
ZGEMLQ ZGEMLQT ZGEMM3M ZGEMM ZGEMQR ZGEMQRT ZGEMV ZGEQL2 ZGEQLF
237228
ZGEQP3 ZGEQR2 ZGEQR2P ZGEQR ZGEQRF ZGEQRFP ZGEQRT2 ZGEQRT3
238229
ZGEQRT ZGERC ZGERFS ZGERQ2 ZGERQF ZGERU ZGESC2 ZGESDD ZGESV
@@ -306,32 +297,45 @@ function lapack_script(;lapack32::Bool=false)
306297
-DCMAKE_TOOLCHAIN_FILE="${CMAKE_TARGET_TOOLCHAIN}" \
307298
-DCMAKE_BUILD_TYPE=Release \
308299
-DBUILD_SHARED_LIBS=ON \
309-
-DBLAS_LIBRARIES="-L${libdir} -l${BLAS}"
300+
-DTEST_FORTRAN_COMPILER=OFF \
301+
-DBLAS_LIBRARIES="-L${libdir} -lblastrampoline"
310302
311-
make -j${nproc} all
303+
make -j${nproc}
312304
make install
313305
314-
if [[ -f "${libdir}/libblas.${dlext}" ]]; then
315-
echo "Error: libblas.${dlext} has been built, linking to libblastrampoline did not work"
316-
exit 1
306+
# Rename liblapack.${dlext} into liblapack32.${dlext}
307+
if [[ "${LAPACK32}" == "true" ]]; then
308+
mv -v ${libdir}/liblapack.${dlext} ${libdir}/liblapack32.${dlext}
309+
# If there were links that are now broken, fix 'em up
310+
for l in $(find ${prefix}/lib -xtype l); do
311+
if [[ $(basename $(readlink ${l})) == liblapack ]]; then
312+
ln -vsf liblapack32.${dlext} ${l}
313+
fi
314+
done
315+
PATCHELF_FLAGS=()
316+
# ppc64le and aarch64 have 64 kB page sizes, don't muck up the ELF section load alignment
317+
if [[ ${target} == aarch64-* || ${target} == powerpc64le-* ]]; then
318+
PATCHELF_FLAGS+=(--page-size 65536)
319+
fi
320+
if [[ ${target} == *linux* ]] || [[ ${target} == *freebsd* ]]; then
321+
patchelf ${PATCHELF_FLAGS[@]} --set-soname liblapack32.${dlext} ${libdir}/liblapack32.${dlext}
322+
elif [[ ${target} == *apple* ]]; then
323+
install_name_tool -id liblapack32.${dlext} ${libdir}/liblapack32.${dlext}
324+
fi
317325
fi
318326
"""
319327
end
320328

321329
# These are the platforms we will build for by default, unless further
322330
# platforms are passed in on the command line
323331
platforms = expand_gfortran_versions(supported_platforms())
332+
324333
# Building ILP64 LAPACK on aarch64 linux runs into internal compiler errors with
325334
# GCC ≤ 7 (=> libgfortran ≤ 4).
326335
filter!(p -> !(arch(p) == "aarch64" && Sys.islinux(p) && libgfortran_version(p) v"4"), platforms)
327336

328-
# The products that we will ensure are always built
329-
products = [
330-
LibraryProduct("liblapack", :liblapack),
331-
]
332-
333337
# Dependencies that must be installed before this package can be built
334338
dependencies = [
335-
Dependency("CompilerSupportLibraries_jll")
336-
Dependency("libblastrampoline_jll"; compat="5.4.0")
339+
Dependency("CompilerSupportLibraries_jll")
340+
Dependency("libblastrampoline_jll"; compat="5.4.0")
337341
]

0 commit comments

Comments
 (0)