1
- using BinaryBuilder
1
+ using BinaryBuilder, Pkg
2
2
3
3
# LAPACK mirrors the OpenBLAS build, whereas LAPACK32 mirrors the OpenBLAS32 build.
4
4
5
- version = v " 3.10.1 "
5
+ version = v " 3.11.0 "
6
6
7
7
# Collection of sources required to build lapack
8
8
sources = [
9
- GitSource (" https://github.com/Reference-LAPACK/lapack.git " ,
10
- " 32b062a33352e05771dcc01b981ebe961bf2e42f " ),
9
+ GitSource (" https://github.com/Reference-LAPACK/lapack" ,
10
+ " 7866626840f5d5e7e27f027a55182da8b3303872 " ),
11
11
]
12
12
13
13
# Bash recipe for building across all platforms
@@ -19,24 +19,23 @@ function lapack_script(;lapack32::Bool=false)
19
19
20
20
script *= raw """
21
21
cd $WORKSPACE/srcdir/lapack*
22
+
22
23
if [[ "${target}" == *-mingw* ]]; then
23
24
BLAS="blastrampoline-5"
24
25
else
25
26
BLAS="blastrampoline"
26
27
fi
27
28
28
- FFLAGS=(-cpp - ffixed-line-length-none -DUSE_ISNAN)
29
+ FFLAGS=- ffixed-line-length-none
29
30
if [[ ${nbits} == 64 ]] && [[ "${LAPACK32}" != "true" ]]; then
30
- FFLAGS="${FFLAGS} -fdefault-integer-8"
31
- fi
31
+ FFLAGS="${FFLAGS} -cpp -DUSE_ISNAN -fdefault-integer-8"
32
32
33
- if [[ ${nbits} == 64 ]] && [[ "${LAPACK32}" != "true" ]]; then
34
33
syms=(CAXPBY CAXPY CBBCSD CBDSQR
35
34
CCOPY CDOTC CDOTU CGBBRD CGBCON CGBEQU CGBEQUB CGBMV CGBRFS
36
35
CGBSV CGBSVX CGBTF2 CGBTRF CGBTRS CGEADD CGEBAK CGEBAL CGEBD2
37
36
CGEBRD CGECON CGEEQU CGEEQUB CGEES CGEESX CGEEV CGEEVX CGEHD2
38
37
CGEHRD CGEJSV CGELQ2 CGELQ CGELQF CGELQT3 CGELQT CGELS CGELSD
39
- CGELSS CGELSY CGEMLQ CGEMLQT CGEMM3M CGEMM CGEMQR CGEMQRT CGEMV
38
+ CGELSS CGELSY CGELST CGEMLQ CGEMLQT CGEMM3M CGEMM CGEMQR CGEMQRT CGEMV
40
39
CGEQL2 CGEQLF CGEQP3 CGEQR2 CGEQR2P CGEQR CGEQRF CGEQRFP CGEQRT2
41
40
CGEQRT3 CGEQRT CGERC CGERFS CGERQ2 CGERQF CGERU CGESC2 CGESDD
42
41
CGESV CGESVD CGESVDQ CGESVDX CGESVJ CGESVX CGETC2 CGETF2 CGETRF2
@@ -99,7 +98,7 @@ function lapack_script(;lapack32::Bool=false)
99
98
DGBSV DGBSVX DGBTF2 DGBTRF DGBTRS DGEADD DGEBAK DGEBAL DGEBD2
100
99
DGEBRD DGECON DGEEQU DGEEQUB DGEES DGEESX DGEEV DGEEVX DGEHD2
101
100
DGEHRD DGEJSV DGELQ2 DGELQ DGELQF DGELQT3 DGELQT DGELS DGELSD
102
- DGELSS DGELSY DGEMLQ DGEMLQT DGEMM DGEMQR DGEMQRT DGEMV DGEQL2
101
+ DGELSS DGELSY DGELST DGEMLQ DGEMLQT DGEMM DGEMQR DGEMQRT DGEMV DGEQL2
103
102
DGEQLF DGEQP3 DGEQR2 DGEQR2P DGEQR DGEQRF DGEQRFP DGEQRT2
104
103
DGEQRT3 DGEQRT DGER DGERFS DGERQ2 DGERQF DGESC2 DGESDD DGESV
105
104
DGESVD DGESVDQ DGESVDX DGESVJ DGESVX DGETC2 DGETF2 DGETRF2
@@ -161,16 +160,13 @@ function lapack_script(;lapack32::Bool=false)
161
160
IDMIN IEEECK ILACLC ILACLR ILADIAG ILADLC ILADLR ILAENV2STAGE
162
161
ILAENV ILAPREC ILASLC ILASLR ILATRANS ILAUPLO ILAVER ILAZLC
163
162
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
163
+ IZAMIN IZMAX1 LSAME LSAMEN SAMAX SAMIN SASUM
168
164
SAXPBY SAXPY SBBCSD SBDSDC SBDSQR SBDSVDX SCABS1 SCAMAX SCAMIN
169
165
SCASUM SCNRM2 SCOMBSSQ SCOPY SCSUM1 SCSUM SDISNA SDOT SDSDOT
170
166
SECOND SGBBRD SGBCON SGBEQU SGBEQUB SGBMV SGBRFS SGBSV SGBSVX
171
167
SGBTF2 SGBTRF SGBTRS SGEADD SGEBAK SGEBAL SGEBD2 SGEBRD SGECON
172
168
SGEEQU SGEEQUB SGEES SGEESX SGEEV SGEEVX SGEHD2 SGEHRD SGEJSV
173
- SGELQ2 SGELQ SGELQF SGELQT3 SGELQT SGELS SGELSD SGELSS SGELSY
169
+ SGELQ2 SGELQ SGELQF SGELQT3 SGELQT SGELS SGELSD SGELSS SGELSY SGELST
174
170
SGEMLQ SGEMLQT SGEMM SGEMQR SGEMQRT SGEMV SGEQL2 SGEQLF SGEQP3
175
171
SGEQR2 SGEQR2P SGEQR SGEQRF SGEQRFP SGEQRT2 SGEQRT3 SGEQRT SGER
176
172
SGERFS SGERQ2 SGERQF SGESC2 SGESDD SGESV SGESVD SGESVDQ SGESVDX
@@ -232,7 +228,7 @@ function lapack_script(;lapack32::Bool=false)
232
228
ZDSCAL ZGBBRD ZGBCON ZGBEQU ZGBEQUB ZGBMV ZGBRFS ZGBSV ZGBSVX
233
229
ZGBTF2 ZGBTRF ZGBTRS ZGEADD ZGEBAK ZGEBAL ZGEBD2 ZGEBRD ZGECON
234
230
ZGEEQU ZGEEQUB ZGEES ZGEESX ZGEEV ZGEEVX ZGEHD2 ZGEHRD ZGEJSV
235
- ZGELQ2 ZGELQ ZGELQF ZGELQT3 ZGELQT ZGELS ZGELSD ZGELSS ZGELSY
231
+ ZGELQ2 ZGELQ ZGELQF ZGELQT3 ZGELQT ZGELS ZGELSD ZGELSS ZGELSY ZGELST
236
232
ZGEMLQ ZGEMLQT ZGEMM3M ZGEMM ZGEMQR ZGEMQRT ZGEMV ZGEQL2 ZGEQLF
237
233
ZGEQP3 ZGEQR2 ZGEQR2P ZGEQR ZGEQRF ZGEQRFP ZGEQRT2 ZGEQRT3
238
234
ZGEQRT ZGERC ZGERFS ZGERQ2 ZGERQF ZGERU ZGESC2 ZGESDD ZGESV
@@ -306,32 +302,46 @@ function lapack_script(;lapack32::Bool=false)
306
302
-DCMAKE_TOOLCHAIN_FILE="${CMAKE_TARGET_TOOLCHAIN}" \
307
303
-DCMAKE_BUILD_TYPE=Release \
308
304
-DBUILD_SHARED_LIBS=ON \
305
+ -DTEST_FORTRAN_COMPILER=OFF \
309
306
-DBLAS_LIBRARIES="-L${libdir} -l${BLAS}"
310
307
311
- make -j${nproc} all
308
+ make -j${nproc}
312
309
make install
313
310
314
311
if [[ -f "${libdir}/libblas.${dlext}" ]]; then
315
312
echo "Error: libblas.${dlext} has been built, linking to libblastrampoline did not work"
316
313
exit 1
317
314
fi
315
+
316
+ # Rename liblapack.${dlext} into liblapack32.${dlext}
317
+ if [[ "${LAPACK32}" == "true" ]]; then
318
+ mv -v ${libdir}/liblapack.${dlext} ${libdir}/liblapack32.${dlext}
319
+ # If there were links that are now broken, fix 'em up
320
+ for l in $(find ${prefix}/lib -xtype l); do
321
+ if [[ $(basename $(readlink ${l})) == liblapack ]]; then
322
+ ln -vsf liblapack32.${dlext} ${l}
323
+ fi
324
+ done
325
+ PATCHELF_FLAGS=()
326
+ # ppc64le and aarch64 have 64 kB page sizes, don't muck up the ELF section load alignment
327
+ if [[ ${target} == aarch64-* || ${target} == powerpc64le-* ]]; then
328
+ PATCHELF_FLAGS+=(--page-size 65536)
329
+ fi
330
+ if [[ ${target} == *linux* ]] || [[ ${target} == *freebsd* ]]; then
331
+ patchelf ${PATCHELF_FLAGS[@]} --set-soname liblapack32.${dlext} ${libdir}/liblapack32.${dlext}
332
+ elif [[ ${target} == *apple* ]]; then
333
+ install_name_tool -id liblapack32.${dlext} ${libdir}/liblapack32.${dlext}
334
+ fi
335
+ fi
318
336
"""
319
337
end
320
338
321
339
# These are the platforms we will build for by default, unless further
322
340
# platforms are passed in on the command line
323
341
platforms = expand_gfortran_versions (supported_platforms ())
324
- # Building ILP64 LAPACK on aarch64 linux runs into internal compiler errors with
325
- # GCC ≤ 7 (=> libgfortran ≤ 4).
326
- filter! (p -> ! (arch (p) == " aarch64" && Sys. islinux (p) && libgfortran_version (p) ≤ v " 4" ), platforms)
327
-
328
- # The products that we will ensure are always built
329
- products = [
330
- LibraryProduct (" liblapack" , :liblapack ),
331
- ]
332
342
333
343
# Dependencies that must be installed before this package can be built
334
344
dependencies = [
335
- Dependency (" CompilerSupportLibraries_jll" )
336
- Dependency (" libblastrampoline_jll" ; compat= " 5.4.0" )
345
+ Dependency (" CompilerSupportLibraries_jll" )
346
+ Dependency (" libblastrampoline_jll" ; compat= " 5.4.0" )
337
347
]
0 commit comments