pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: pkgsrc
Module Name: pkgsrc
Committed By: thor
Date: Tue Feb 24 23:09:03 UTC 2026
Modified Files:
pkgsrc/doc: CHANGES-2026 TODO
pkgsrc/math/openblas: Makefile.common distinfo version.mk
pkgsrc/math/openblas/patches: patch-Makefile patch-Makefile.install
patch-Makefile.system patch-c__check
Added Files:
pkgsrc/math/openblas/patches: patch-driver_others_Makefile
patch-driver_others_blas__server__callback.c patch-exports_Makefile
patch-openblas.pc.in
Removed Files:
pkgsrc/math/openblas/patches: patch-Makefile.rule
Log Message:
openblas: update to 0.3.31
OpenBLAS ChangeLog
====================================================================
Version 0.3.31
15-Jan-2025
general:
- reverted a matrix partitioning optimization from 0.3.30 that could lead to
race conditions and subsequent invalid results in GEMM
- added the bfloat16 extensions BGEMM and BGEMV
- added a BLAS interface for the ?GEMM_BATCH extensions
- added the BLAS extensions ?GEMM_BATCH_STRIDED and their CBLAS interface
- added the basic infrastructure for half-precision float (FP16) format
using SH prefix
- reimplemented the LAPACK SLAED3/DLAED3 function using multithreading, thereby
improving the performance of the SSYEVD/DSYEVD eigensolver for symmetric matrices
on all platforms
- limited the number of retries for initial memory allocation to avoid infinite
hanging on low-memory systems
- fixed a thread lockup situation encountered with python 3.9 or older and numpy
- introduced a problem size threshold for multithreading in STRMV/DTRMV
- introduced a problem size threshold for multithreading in CHER/CHER2/CHPR/CHPR2
and ZHER/ZHER2/ZHPR/ZHPR2
- improved the problem size thresholds for multithreading in SGER/DGER
- improved autodetection of the Fortran compiler
- fixed passing of the INTERFACE64=1 option to the flang-new compiler
- fixed a potential deadlock in multithreaded code after calling fork()
- fixed builds using CMake on FreeBSD
- fixed builds using CMake from within Cygwin on Windows
- fixed builds using CMake and the NVHPC compiler on ARM64
- fixed CMake build error from misdetecting compiler or OpenMP versions
- improved contents of the CMake-generated OpenBLASConfig.cmake file
- added support for cross-compilation to RISCV targets via CMake
- fixed cross-compilation to x86 targets from non-x86 architectures
- fixed failure to install cblas.h if NO_CBLAS=0 was specified
- fixed missing user-defined pre- and postfixes on functions in lapack.h,lapacke.h
- included fixes from the Reference-LAPACK project:
- fix ordering bug in ?LAED/?LASD (Reference-LAPACK PR 1140)
- revert changes in ?GEEV from PR 1129 (Reference-LAPACK PR 1142)
- fix workspace allocation in LAPACKE_?TRSEN (Reference-LAPACK PR 1144)
riscv:
- added optimized SBGEMM kernels for ZVL128B and ZVL256B targets
- added optimized SHGEMM kernels for ZVL128B and ZVL256B targets
- added optimized SBGEMV and SHGEMV kernels for ZVL128B/ZVL256B
- improved performance of the GEMV kernel for ZVL256B
- improved the performance of the CROT and ZROT kernels for ZVL128B and x280
- improved the detection of RVV1.0 capability
- improved performance of the matrix packing helper functions for ZVL128B and ZVL256B
- improved performance of OMATCOPY for ZVL128B and ZVL256B
arm:
- fixed spurious executable stack in the getarch utility
arm64:
- fixed spurious executable stack in the getarch utility
- fixed compiler warnings arising from the timer macro RPCC
- fixed cache size detection for Qualcomm Oryon under Windows on Arm
- fixed argument handling in the default SVE kernel for SDOT/DDOT
- building the BFLOAT16 kernels is now enabled by default
- improved the overall performance of GEMM,SYMM and HEMM on A64FX
- improved the performance of SDOT/DDOT on A64FX
- improved the multithreading performance of SDOT/DDOT on A64FX by
introduction of a throttling table matching thread count to problem size
- improved the performance of SGER/DGER on A64FX and NEOVERSEV1
- improved the multithreading performance of GEMM on A64FX and NEOVERSEV1
- improved the performance of the GEMV kernel for SVE-capable targets
- improved the multithreading performance of SGEMM on NEOVERSEV1 and V2
- added optimized SAXPY/DAXPY SVE kernels for A64FX and NEOVERSEV1
- added optimized BGEMM and BGEMV kernels for NEOVERSEV1
- added an optimized BGEMM kernel for NEOVERSEN2
- added support for the NEOVERSEV2 cpu
- added dedicated support for the Apple M4 cpu as VORTEXM4
- added optimized SGEMM/SSYMM/STRMM/SSYRK/SSYR2K for SME-capable targets
(ARMV9SME and VORTEXM4)
- improved the precision of the SNRM2 kernel
- added cpu autodetection and compiler settings for Ampere One processors
- fixed cpu autodetection for Apple M systems running Linux
- fixed building on MacOS with AppleClang,gfortran and xcode v16 or newer
- fixed several errors in the C code replacements for the complex and double
precision complex LAPACK functions that get used (only) when compiling with
Microsoft C and NOFORTRAN=1 under MS Windows
power:
- added initial support for the POWER11 architecture
- improved performance of DGEMM and DGEMV on POWER10
- fixed the default compiler flags to use "-O3" instead of the possibly unsafe
"-Ofast"
- fixed building under MacOS (for old G4 Macs) with CMake
- fixed potential miscompilation of DGEMV and other assembly kernels by gcc15.1
- fixed compilation with recent versions of flang
loongarch64:
- fixed warnings and potential inaccuracies arising from incorrect saving of registers
- fixed enumeration of logical cores on big NUMA servers
- fixed building with LLVM and the INTERFACE64=1 option
x86:
- fixed building the GEMM3M kernels for the GENERIC target
- fixed several errors in the C code replacements for the complex and double
precision complex LAPACK functions that get used (only) when compiling with
Microsoft C and NOFORTRAN=1 under MS Windows
x86_64:
- added cpu autodetection for Intel Lunar Lake (Core Ultra 200V)
- changed all ?MIN and ?MAX assembly kernels to use unaligned operations
- fixed several errors in the C code replacements for the complex and double
precision complex LAPACK functions that get used (only) when compiling with
Microsoft C and NOFORTRAN=1 under MS Windows
- fixed potential crashes in builds for Cooper Lake, Sapphire Rapids or Zen5 cpus
under MS Windows
zarch:
- added support for building with CMake
sparc:
- fixed a potential crash in the DNRM2 kernel
====================================================================
Version 0.3.30
19-Jun-2025
general:
- fixed an installation problem with the thread safety test in gmake builds
- fixed spurious overwriting of an input array in complex GEMMT/GEMMTR
- fixed naming of GEMMTR in error messages from XERBLA
- fixed compilation of SBGEMMT/SBGEMMTR in CMake builds
- fixed the implementation of ?NRM2 to handle INCX=0 correctly
- removed tests for CSROT and ZDROT that relied on unspecified behavior
- fixed a performance regression in multithreaded GEMM that was particularly
serious on POWER targets
- fixed linking issues when using LLVM's flang-new with gmake
- fixed a potential thread safety problem with C11 atomic operations
- further improved the workload partitioning in parallel GEMM
- fixed omission of LAPACKE interfaces for CGESVDQ,CTRSYL3 and ?GEQPF in
CMake builds
- fixed mishandling of setting NO_LAPACK to FALSE, and incorrect dependencies
for LAPACK function SPMV in CMake builds
- added explicit CMake options for building LAPACKE and shared libraries
- simplified and improved handling of OpenMP options in CMake builds
- reworked Windows DLL generation in CMake builds to ensure correct symbol
renaming (pre/postfixing) and optional generation of PDB files for debugging
- updated the Perl script version of the gensymbol utility for use with
Windows-on-Arm
- Fixed building with (Mingw) gmake on Windows to ensure completeness of the
LAPACK included in the static library (potential race condition due to the
Windows version of the "ln" utility creating snapshot copies rather than links)
- fixed unwanted deletion of the lapacke_mangling.h file by "make clean"
- fixed potential duplication of a _64 suffix on library names in CMake builds
- fixed compilation of the C fallback copies of the LAPACK code with GCC 15
- included fixed from the Reference-LAPACK project:
- fixed a truncated error message in the EIG part of the testsuite
(Reference-LAPACK PR 1119)
- fixed too strict check in LAPACKE_?gesdd_work (PR #1126)
- fixed memory corruption when calling ?GEEV with non-finite data (PR #1128)
- fixed missing initialization of a variable in C/GEQP3RK (PR #1131)
- fixed 2nd dimension chosen in C/ZUNMLQ transposition operation (PR #1135)
x86_64:
- fixed an error in the SBGEMV kernel for Cooper Lake/Sapphire Rapids
- fixed corner cases of NAN and INF input handling in CSCAL and ZSCAL
- improved the compiler identification code for flang-new
- fixed a potential build issue in the ZSUM kernel
- fixed "argument list too long" errors when building on MacOS
- added cpu autodetection support for several new Arrow Lake models
- fixed conditional inclusion of the fast path SGEMM kernel in DYNAMIC_ARCH
- fixed compilation with the MinGW build of GCC 15
arm64:
- fixed cpu type detection of A64FX and some ThunderX models (broken in 0.3.29)
- added support for the AmpereOne/1A cpus in DYNAMIC_ ARCH builds
- added an optimized SBGEMM kernel for NEOVERSEV1
- improved 1xN SBGEMM performance by forwarding to SBGEMV
- introduced a stepwise increase of the thread count used for
SGEMM and SGEMV on NEOVERSEV1/V2 in relation to problem size
- introduced a stepwise increase of the thread count used for
DGEMV on NEOVERSEV1 in relation to problem size
- introduced a stepwise increase of the thread count used for
SDOT and DDOT on NEOVERSEV1 in relation to problem size
- worked around assembler limitations in LLVM for Windows-on-Arm
- enabled cpu type autodetection from the registry on Windows-on-Arm
- improved multithreading threshold for GEMV and GESV on Windows-on-Arm
- fixed overoptimization issues with LLVM's flang in Windows-on-Arm
- fixed corner cases of NAN and INF input handling in CSCAL and ZSCAL
- added a fast path SGEMM kernel for small workloads on SME capable targets
- improved performance of SGEMM and DGEMM kernels for small workloads
- improved performance of SGEMV and DGEMV on SVE-capable targets
- improved performance of SGEMV on NEOVERSEN1 and Apple M
- added optimized SSYMV and DSYMV kernels for NEOVERSEN1, Apple M and all
SVE capable targets
- added optimized SBGEMV kernels for NEOVERSEV1/V2/N2
- improved performance of SGEMM through faster NCOPY kernels
- added compiler options for the NVIDIA HPC Compiler Suite
- fixed compilation on OSX with XCode 16.3 and later
- fixed cpu core type and cache size detection on Apple M4
- updated GEMM parameter settings for Neoverse cpus in cross-builds with CMake
- fixed default compiler options for NEOVERSEN1 and CORTEXX2 in CMake builds
- fixed conditional inclusion of the fast path SGEMM kernel in DYNAMIC_ARCH
- fixed potential miscompilation of the non-SVE SDOT kernel
riscv64:
- added optimized SROTM and DROTM kernels for x280
- fixed corner cases of NAN and INF input handling in CSCAL and ZSCAL
- improved performance of GEMM_TCOPY on RVV1.0 targets with
VLEN of 128 or 256
- improved performance of OMATCOPY on targets with VLEN 256
- greatly improved performance of SGEMV/DGEMV
- improved performance of CGEMV and ZGEMV on C910V and all RVV targets
with VLEN 256
- improved performance of SAXPBY and DAXPBY on C910V and all RVV targets
with VLEN 256
- improved performance of AXPY and DOT on C910V and ZVL256B targets by
falling back to non-vectorized code for very small N. (Thereby fixing
poor performance of CHBMV/ZHBMV for very small K)
- fixed CMake build failures of the TRMM kernels
loongarch64:
- improved performance of the LSX versions of SSYMV/DSYMV
- made the LASX versions of the DSYMV and SSYMV kernels
compatible with hardware changes in LA664 and future targets
- fixed inaccuracies in several LASX kernels
- improved compatibility of LSX kernels with LA264 targets
- fixed handling of deprecated target names in CMake builds
- fixed corner cases of NAN and INF input handling in CSCAL and ZSCAL
power:
- fixed building for PPCG4 with CMake
- fixed SSCAL/DSCAL on PPC970 running FreeBSD
- fixed a potential alignment issue in the POWER8 SGEMV kernel
- fixed corner cases of NAN and INF input handling in CSCAL and ZSCAL
zarch:
- fixed corner cases of NAN and INF input handling in CSCAL and ZSCAL
- fixed unwanted generation of object files with a writable stack
x86:
- fixed corner cases of NAN and INF input handling in CSCAL and ZSCAL
- worked around potential miscompilation of CDOT with very old binutils
arm:
- fixed corner cases of NAN and INF input handling in CSCAL and ZSCAL
- fixed unwanted generation of object files with a writable stack
sparc:
- fixed corner cases of NAN and INF input handling in CSCAL and ZSCAL
alpha:
- fixed build failure caused by spurious Windows-only typecasts
cell:
- fixed probable build issue caused by spurious Windows-only typecasts
====================================================================
Version 0.3.29
12-Jan-2025
general:
- fixed a potential NULL pointer dereference in multithreaded builds
- added function aliases for GEMMT using its new name GEMMTR adopted by Reference-BLAS
- fixed a build failure when building without LAPACK_DEPRECATED functions
- the minimum required CMake version for CMake-based builds was raised to 3.16.0 in order
to remove many compatibility and deprecation warnings
- added more detailed CMake rules for OpenMP builds (mainly to support recent LLVM)
- fixed the behavior of the recently added CBLAS_?GEMMT functions with row-major data
- improved thread scaling of multithreaded SBGEMV
- improved thread scaling of multithreaded TRTRI
- fixed compilation of the CBLAS testsuite with gcc14 (and no Fortran compiler)
- added support for option handling changes in flang-new from LLVM18 onwards
- added support for recent calling conventions changes in Cray and NVIDIA compilers
- added support for compilation with the NAG Fortran compiler
- fixed placement of the -fopenmp flag and libsuffix in the generated pkgconfig file
- improved the CMakeConfig file generated by the Makefile build
- fixed const-correctness of cblas_?geadd in cblas.h
- fixed a potential inaccuracy in multithreaded BLAS3 calls
- fixed empty implementations of get/set_affinity that print a warning in OpenMP builds
- fixed function signatures for TRTRS in the converted C version of LAPACK
- fixed omission of several single-precision LAPACK symbols in the shared library
- improved build instructions for the provided "pybench" benchmarks
- improved documentation, including added build instructions for WoA and HarmonyOS
as well as descriptions of environment variables that affect build and runtime behavior
- added a separate "make install_tests" target for use with cross-compilations
- integrated improvements and corrections from Reference-LAPACK:
- removed a comparison in LAPACKE ?tpmqrt that is always false (LAPACK PR 1062)
- fixed the leading dimension for B in tests for GGEV (LAPACK PR 1064)
- replaced the ?LARFT functions with a recursive implementation (LAPACK PR 1080)
arm:
- fixed build with recent versions of the NDK (missing .type declaration of symbols)
arm64:
- fixed a long-standing bug in the (generic) c/zgemm_beta kernel that could lead to
reads and writes outside the array bounds in some circumstances
- rewrote cpu autodetection to scan all cores and return the highest performing type
- improved the DGEMM performance for SVE targets and small matrix sizes
- improved dimension criteria for forwarding from GEMM to GEMV kernels
- added SVE kernels for ROT and SWAP
- improved SVE kernels for SGEMV and DGEMV on A64FX and NEOVERSEV1
- added support for using the "small matrix" kernels with CMake as well
- fixed compilation on Windows on Arm
- improved compile-time detection of SVE capability
- added cpu autodetection and initial support for Apple M4
- added support for compilation on systems running IOS
- added support for compilation on NetBSD ("evbarm" architecture)
- fixed NRM2 implementations for generic SVE targets and the Neoverse N2
- fixed compilation for SVE-capable targets with the NVIDIA compiler
x86_64:
- fixed a wrong storage size in the SBGEMV kernel for Cooper Lake
- added cpu autodetection for Intel Granite Rapids
- added cpu autodetection for AMD Ryzen 5 series
- added optimized SOMATCOPY_CT for AVX-capable targets
- fixed the fallback implementation of GEMM3M in GENERIC builds
- tentatively re-enabled builds with the EXPRECISION option
- worked around a miscompilation of tests with mingw32-gfortran14
- added support for compilation with the Intel oneAPI 2025.0 compiler on Windows
power:
- fixed multithreaded SBGEMM
- fixed a CMake build problem on POWER10
- improved the performance of SGEMV
- added vectorized implementations of SBGEMV and support for forwarding 1xN SBGEMM to them
- fixed illegal instructions and potential memory overflow in SGEMM on PPCG4
- fixed handling of NaN and Inf arguments in SSCAL and DSCAL on PPC440,G4 and 970
- added improved CGEMM and ZGEMM kernels for POWER10
- added Makefile logic to remove all optimization flags in DEBUG builds
mips64:
- fixed compilation with gcc14
- fixed GEMM parameter selection for the MIPS64_GENERIC target
- fixed a potential build failure when compiling with OpenMP
loongarch64:
- fixed compilation for Loongson3 with recent versions of gmake
- fixed a potential loss of precision in Loongson3A GEMM
- fixed a potential build failure when compiling with OpenMP
- added optimized SOMATCOPY for LASX-capable targets
- introduced a new cpu naming scheme while retaining compatibility
- added support for cross-compiling Loongarch64 targets with CMake
- added support for compilation with LLVM
riscv64:
- removed thread yielding overhead caused by sched_yield
- replaced some non-standard intrinsics with their official names
- fixed and sped up the implementations of CGEMM/ZGEMM TCOPY for vector lenghts 128 and 256
- improved the performance of SNRM2/DNRM2 for RVV1.0 targets
- added optimized ?OMATCOPY_CN kernels for RVV1.0 targets
====================================================================
Version 0.3.28
8-Aug-2024
general:
- Reworked the unfinished implementation of HUGETLB from GotoBLAS
for allocating huge memory pages as buffers on suitable systems
- Changed the unfinished implementation of GEMM3M for the generic
target on all architectures to at least forward to regular GEMM
- Improved multithreaded GEMM performance for large non-skinny matrices
- Improved BLAS3 performance on larger multicore systems through improved
parallelism
- Improved performance of the initial memory allocation by reducing
locking overhead
- Improved performance of GBMV at small problem sizes by introducing
a size barrier for the switch to multithreading
- Added an implementation of the CBLAS_GEMM_BATCH extension
- Fixed miscompilation of CAXPYC and ZAXPYC on all architectures in
CMAKE builds (error introduced in 0.3.27)
- Fixed corner cases involving the handling of NAN and INFINITY
arguments in ?SCAL on all architectures
- Added support for cross-compiling to WEBM with CMAKE (in addition
to the already present makefile support)
- Fixed NAN handling and potential accuracy issues in compilations with
Intel ICX by supplying a suitable fp-model option by default
- The contents of the github project wiki have been converted into
a new set of documentation included with the source code.
- It is now possible to register a callback function that replaces
the built-in support for multithreading with an external backend
like TBB (openblas_set_threads_callback_function)
- Fixed potential duplication of suffixes in shared library naming
- Improved C compiler detection by the build system to tolerate more
naming variants for gcc builds
- Fixed an unnecessary dependency of the utest on CBLAS
- Fixed spurious error reports from the BLAS extensions utest
- Fixed unwanted invocation of the GEMM3M tests in cross-compilation
- Fixed a flaw in the makefile build that could lead to the pkgconfig
file containing an entry of UNKNOWN for the target cpu after installing
- Integrated fixes from the Reference-LAPACK project:
- Fixed uninitialized variables in the LAPACK tests for ?QP3RK (PR 961)
- Fixed potential bounds error in ?UNHR_COL/?ORHR_COL (PR 1018)
- Fixed potential infinite loop in the LAPACK testsuite (PR 1024)
- Make the variable type used for hidden length arguments configurable (PR 1025)
- Fixed SYTRD workspace computation and various typos (PR 1030)
- Prevent compiler use of FMA that could increase numerical error in ?GEEVX (PR 1033)
x86-64:
- reverted thread management under Windows to its state before 0.3.26
due to signs of race conditions in some circumstances now under study
- fixed accidental selection of the unoptimized generic SBGEMM kernel
in CMAKE builds for CooperLake and SapphireRapids targets
- fixed a potential thread buffer overrun in SBSTOBF16 on small systems
- fixed an accuracy issue in ZSCAL introduced in 0.3.26
- fixed compilation with CMAKE and recent releases of LLVM
- added support for Intel Emerald Rapids and Meteor Lake cpus
- added autodetection support for the Zhaoxin KX-7000 cpu
- fixed autodetection of Intel Prescott (probably broken since 0.3.19)
- fixed compilation for older targets with the Yocto SDK
- fixed compilation of the converter-generated C versions
of the LAPACK sources with gcc-14
- improved compiler options when building with CMAKE and LLVM for
AVX512-capable targets
- added support for supplying the L2 cache size via an environment
variable (OPENBLAS_L2_SIZE) in case it is not correctly reported
(as in some VM configurations)
- improved the error message shown when thread creation fails on startup
- fixed setting the rpath entry of the dylib in CMAKE builds on MacOS
arm:
- fixed building for baremetal targets with make
arm64:
- Added a fast path forwarding SGEMM and DGEMM calls with a 1xN or Mx1
matrix to the corresponding GEMV kernel
- added optimized SGEMV and DGEMV kernels for A64FX
- added optimized SVE kernels for small-matrix GEMM
- added A64FX to the cpu list for DYNAMIC_ARCH
- fixed building with support for cpu affinity
- worked around accuracy problems with C/ZNRM2 on NeoverseN1 and
Apple M targets
- improved GEMM performance on Neoverse V1
- fixed compilation for NEOVERSEN2 with older compilers
- fixed potential miscompilation of the SVE SDOT and DDOT kernels
- fixed potential miscompilation of the non-SVE CDOT and ZDOT kernels
- fixed a potential overflow when using very large user-defined BUFFERSIZE
- fixed setting the rpath entry of the dylib in CMAKE builds on MacOS
power:
- Added a fast path forwarding SGEMM and DGEMM calls with a 1xN or Mx1
matrix to the corresponding GEMV kernel
- significantly improved performance of SBGEMM on POWER10
- fixed compilation with OpenMP and the XLF compiler
- fixed building of the BLAS extension utests under AIX
- fixed building of parts of the LAPACK testsuite with XLF
- fixed CSWAP/ZSWAP on big-endian POWER10 targets
- fixed a performance regression in SAXPY on POWER10 with OpenXL
- fixed accuracy issues in CSCAL/ZSCAL when compiled with LLVM
- fixed building for POWER9 under FreeBSD
- fixed a potential overflow when using very large user-defined BUFFERSIZE
- fixed an accuracy issue in the POWER6 kernels for GEMM and GEMV
riscv64:
- Added a fast path forwarding SGEMM and DGEMM calls with a 1xN or Mx1
matrix to the corresponding GEMV kernel
- fixed building for RISCV64_GENERIC with OpenMP enabled
- added DYNAMIC_ARCH support (comprising GENERIC_RISCV64 and the two
RVV 1.0 targets with vector length of 128 and 256)
- worked around the ZVL128B kernels for AXPBY mishandling the special
case of zero Y increment
loongarch64:
- improved GEMM performance on servers of the 3C5000 generation
- improved performance and stability of DGEMM
- improved GEMV and TRSM kernels for LSX and LASX vector ABIs
- fixed CMAKE compilation with the INTERFACE64 option set
- fixed compilation with CMAKE
- worked around spurious errors flagged by the BLAS3 tests
- worked around a miscompilation of the POTRS utest by gcc 14.1
mips64:
- fixed ASUM and SUM kernels to accept negative step sizes in X
- fixed complex GEMV kernels for MSA
====================================================================
Version 0.3.27
4-Apr-2024
general:
- added initial (generic) support for the CSKY architecture
- capped the maximum number of threads used in GEMM, GETRF and POTRF to avoid creating
underutilized or idle threads
- sped up multithreaded POTRF on all platforms
- added extension openblas_set_num_threads_local() that returns the previous thread count
- re-evaluated the SGEMV and DGEMV load thresholds to avoid activating multithreading
for too small workloads
- improved the fallback code used when the precompiled number of threads is exceeded,
and made it callable multiple times during the lifetime of an instance
- added CBLAS interfaces for the BLAS extensions ?AMIN,?AMAX, CAXPYC and ZAXPYC
- fixed a potential buffer overflow in the interface to the GEMMT kernels
- fixed use of incompatible pointer types in GEMMT and C/ZAXPBY as flagged by GCC-14
- fixed unwanted case sensitivity of the character parameters in ?TRTRS
- sped up the OpenMP thread management code
- fixed sizing of logical variables in INTERFACE64 builds of the C version of LAPACK
- fixed inclusion of new LAPACK and LAPACKE functions from LAPACK 3.11 in the shared library
- added a testsuite for the BLAS extensions
- modified the error thresholds for SGS/DGS functions in the LAPACK testsuite to suppress
spurious errors
- added support for building the benchmark collection with CMAKE
- added rewriting of linker options to avoid linking both libgomp and libomp in CMAKE builds
with OpenMP enabled that use clang with gfortran
- fixed building on systems with ucLibc
- added support for calling ?NRM2 with a negative increment value on all architectures
- added support for the LLVM18 version of the flang-new compiler
- fixed handling of the OPENBLAS_LOOPS variable in several benchmarks
- Integrated fixes from the Reference-LAPACK project:
- Increased accuracy in C/ZLARFGP (Reference-LAPACK PR 981)
x86:
- fixed handling of NaN and Inf arguments in ZSCAL
- fixed GEMM3M functions failing in CMAKE builds
x86-64:
- removed all instances of sched_yield() on Linux and BSD
- fixed a potential deadlock in the thread server on MSWindows (introduced in 0.3.26)
- fixed GEMM3M functions failing in CMAKE builds
- fixed handling of NaN and Inf arguments in ZSCAL
- added compiler checks for AVX512BF16 compatibility
- fixed LLVM compiler options for Sapphire Rapids
- fixed cpu handling fallbacks for Sapphire Rapids with
disabled AVX2 in DYNAMIC_ARCH mode
- fixed extensions SCSUM and DZSUM
- improved GEMM performance for ZEN targets
arm:
- fixed handling of NaN and Inf arguments in ZSCAL
arm64:
- added initial support for the Cortex-A76 cpu
- fixed handling of NaN and Inf arguments in ZSCAL
- fixed default compiler options for gcc (-march and -mtune)
- added support for ArmCompilerForLinux
- added support for the NeoverseV2 cpu in DYNAMIC_ARCH builds
- fixed mishandling of the INTERFACE64 option in CMAKE builds
- corrected SCSUM kernels (erroneously duplicating SCASUM behaviour)
- added SVE-enabled kernels for CSUM/ZSUM
- worked around an inaccuracy in the NRM2 kernels for NeoverseN1 and Apple M
power:
- improved performance of SGEMM on POWER8/9/10
- improved performance of DGEMM on POWER10
- added support for OpenMP builds with xlc/xlf on AIX
- improved cpu autodetection for DYNAMIC_ARCH builds on older AIX
- fixed cpu core counting on AIX
- added support for building a shared library on AIX
riscv64:
- added support for the X280 cpu
- added support for semi-generic RISCV models with vector length 128 or 256
- added support for compiling with either RVV 0.7.1 or RVV 1.0 standard compilers
- fixed handling of NaN and Inf arguments in ZSCAL
- improved cpu model autodetection
- fixed corner cases in ?AXPBY for C910V
- fixed handling of zero increments in ?AXPY kernels for C910V
loongarch64:
- added optimized kernels for ?AMIN and ?AMAX
- fixed handling of NaN and Inf arguments in ZSCAL
- fixed handling of corner cases in ?AXPBY
- fixed computation of SAMIN and DAMIN in LSX mode
- fixed computation of ?ROT
- added optimized SSYMV and DSYMV kernels for LSX and LASX mode
- added optimized CGEMM and ZGEMM kernels for LSX and LASX mode
- added optimized CGEMV and ZGEMV kernels
mips:
- fixed utilizing MSA on P5600 and related cpus (broken in 0.3.22)
- fixed handling of NaN and Inf arguments in ZSCAL
- fixed mishandling of the INTERFACE64 option in CMAKE builds
zarch:
- fixed handling of NaN and Inf arguments in ZSCAL
- fixed calculation of ?SUM on Z13
To generate a diff of this commit:
cvs rdiff -u -r1.1383 -r1.1384 pkgsrc/doc/CHANGES-2026
cvs rdiff -u -r1.26863 -r1.26864 pkgsrc/doc/TODO
cvs rdiff -u -r1.11 -r1.12 pkgsrc/math/openblas/Makefile.common
cvs rdiff -u -r1.12 -r1.13 pkgsrc/math/openblas/distinfo
cvs rdiff -u -r1.5 -r1.6 pkgsrc/math/openblas/version.mk
cvs rdiff -u -r1.4 -r1.5 pkgsrc/math/openblas/patches/patch-Makefile
cvs rdiff -u -r1.7 -r1.8 pkgsrc/math/openblas/patches/patch-Makefile.install
cvs rdiff -u -r1.1 -r0 pkgsrc/math/openblas/patches/patch-Makefile.rule
cvs rdiff -u -r1.3 -r1.4 pkgsrc/math/openblas/patches/patch-Makefile.system
cvs rdiff -u -r1.1 -r1.2 pkgsrc/math/openblas/patches/patch-c__check
cvs rdiff -u -r0 -r1.1 \
pkgsrc/math/openblas/patches/patch-driver_others_Makefile \
pkgsrc/math/openblas/patches/patch-driver_others_blas__server__callback.c \
pkgsrc/math/openblas/patches/patch-exports_Makefile \
pkgsrc/math/openblas/patches/patch-openblas.pc.in
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: pkgsrc/doc/CHANGES-2026
diff -u pkgsrc/doc/CHANGES-2026:1.1383 pkgsrc/doc/CHANGES-2026:1.1384
--- pkgsrc/doc/CHANGES-2026:1.1383 Tue Feb 24 21:51:07 2026
+++ pkgsrc/doc/CHANGES-2026 Tue Feb 24 23:09:02 2026
@@ -1,4 +1,4 @@
-$NetBSD: CHANGES-2026,v 1.1383 2026/02/24 21:51:07 js Exp $
+$NetBSD: CHANGES-2026,v 1.1384 2026/02/24 23:09:02 thor Exp $
Changes to the packages collection and infrastructure in 2026:
@@ -1857,3 +1857,9 @@ Changes to the packages collection and i
Updated devel/py-testtools to 2.8.4 [adam 2026-02-24]
Updated www/cgit to 1.3 [wiz 2026-02-24]
Updated devel/objfw to 1.5.1 [js 2026-02-24]
+ Updated math/openblas to 0.3.31 [thor 2026-02-24]
+ Updated math/openblas64 to 0.3.31 [thor 2026-02-24]
+ Updated math/openblas64_openmp to 0.3.31 [thor 2026-02-24]
+ Updated math/openblas64_pthread to 0.3.31 [thor 2026-02-24]
+ Updated math/openblas_openmp to 0.3.31 [thor 2026-02-24]
+ Updated math/openblas_pthread to 0.3.31 [thor 2026-02-24]
Index: pkgsrc/doc/TODO
diff -u pkgsrc/doc/TODO:1.26863 pkgsrc/doc/TODO:1.26864
--- pkgsrc/doc/TODO:1.26863 Tue Feb 24 04:02:41 2026
+++ pkgsrc/doc/TODO Tue Feb 24 23:09:02 2026
@@ -1,4 +1,4 @@
-$NetBSD: TODO,v 1.26863 2026/02/24 04:02:41 ryoon Exp $
+$NetBSD: TODO,v 1.26864 2026/02/24 23:09:02 thor Exp $
Suggested new packages
======================
@@ -989,7 +989,6 @@ For possible Perl packages updates, see
o olvwm-4.5
o oo2c-2.1.11
o opal-3.16.2
- o openblas-0.3.31
o opencl-3.0.19
o opencpn-5.12.4
o opencpn-plugin-draw-1.8.5.2
Index: pkgsrc/math/openblas/Makefile.common
diff -u pkgsrc/math/openblas/Makefile.common:1.11 pkgsrc/math/openblas/Makefile.common:1.12
--- pkgsrc/math/openblas/Makefile.common:1.11 Sun Jun 1 16:55:21 2025
+++ pkgsrc/math/openblas/Makefile.common Tue Feb 24 23:09:01 2026
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.common,v 1.11 2025/06/01 16:55:21 thor Exp $
+# $NetBSD: Makefile.common,v 1.12 2026/02/24 23:09:01 thor Exp $
#
# used by math/openblas_pthread/Makefile
# used by math/openblas_openmp/Makefile
@@ -68,17 +68,20 @@ MAKE_FLAGS+= BINARY64=1
MAKE_FLAGS+= OPENBLAS_INCLUDE_DIR=${PREFIX}/include/${OPENBLAS_VARIANT}
MAKE_FLAGS+= OPENBLAS_CMAKE_DIR=${PREFIX}/lib/cmake/${OPENBLAS_VARIANT}
-# Settled on no sumbol suffix for 64 bit.
+# Settled on no symbol suffix for 64 bit.
+# TODO: at some point follow the lead of reference BLAS and combine
+# _64 symbols in one library. I hope OpenBLAS upstream comes around.
MAKE_FLAGS+= FIXED_LIBNAME=1
+
.if ${OPENBLAS_VARIANT} == openblas || ${OPENBLAS_VARIANT} == openblas64
MAKE_FLAGS+= USE_OPENMP=0 USE_THREAD=0 USE_LOCKING=1
BENCHMARK_ENV= USE_SIMPLE_THREADED_LEVEL3=1
.elif !empty(OPENBLAS_VARIANT:Mopenblas*_pthread)
-MAKE_FLAGS+= LIBNAMESUFFIX=pthread
+MAKE_FLAGS+= LIBNAMESUFFIX=_pthread
MAKE_FLAGS+= USE_OPENMP=0 USE_THREAD=1
BENCHMARK_ENV= OPENBLAS_NUM_THREADS=${BENCHMARK_MAXTHREADS}
.elif !empty(OPENBLAS_VARIANT:Mopenblas*_openmp)
-MAKE_FLAGS+= LIBNAMESUFFIX=openmp
+MAKE_FLAGS+= LIBNAMESUFFIX=_openmp
MAKE_FLAGS+= USE_OPENMP=1 NO_AFFINITY=1
BENCHMARK_ENV= OMP_NUM_THREADS=${BENCHMARK_MAXTHREADS}
.include "../../mk/openmp.mk"
Index: pkgsrc/math/openblas/distinfo
diff -u pkgsrc/math/openblas/distinfo:1.12 pkgsrc/math/openblas/distinfo:1.13
--- pkgsrc/math/openblas/distinfo:1.12 Thu Apr 25 10:02:07 2024
+++ pkgsrc/math/openblas/distinfo Tue Feb 24 23:09:01 2026
@@ -1,15 +1,18 @@
-$NetBSD: distinfo,v 1.12 2024/04/25 10:02:07 jperkin Exp $
+$NetBSD: distinfo,v 1.13 2026/02/24 23:09:01 thor Exp $
-BLAKE2s (OpenBLAS-0.3.26.tar.gz) = 0fbd69665e88cffb118b86af77fd981ad5f5eb167f0ddf7deb5616efdf4b732e
-SHA512 (OpenBLAS-0.3.26.tar.gz) = 01d3a536fbfa62f276fd6b1ad0e218fb3d91f41545fc83ddc74979fa26372d8389f0baa20334badfe0adacd77bd944c50a47ac920577373fcc1d495553084373
-Size (OpenBLAS-0.3.26.tar.gz) = 24404912 bytes
-SHA1 (patch-Makefile) = 1b375bddd95af23cfe5e3ccd9476d3bf0fa78043
-SHA1 (patch-Makefile.install) = 3e15dc3674285b5b6b014e8ab17f77f60cf7ac61
-SHA1 (patch-Makefile.rule) = 45b6b4576fb521fa093252c63b899d4178a516b6
-SHA1 (patch-Makefile.system) = 6dc9fd85731ca88cb1fdb9063ba3baa31edbcfb8
-SHA1 (patch-c__check) = 5d30cd9b2534d553d4dfec757b69d3de408054a2
+BLAKE2s (OpenBLAS-0.3.31.tar.gz) = 61531162bf9c314e87bab487894d86b8c8c89e14627610d5909421daba3566c1
+SHA512 (OpenBLAS-0.3.31.tar.gz) = 703b84c476c148a0922a04b1c33c9c4c452f478d608d93e59204b8f0f2c516344301ff0a4dbb3750a2449db0d28cc2df001c295898e859b41ecb8381f9c2eab8
+Size (OpenBLAS-0.3.31.tar.gz) = 25232810 bytes
+SHA1 (patch-Makefile) = fa6335a2cf9925c285611dc20f5a67e6b49a01c9
+SHA1 (patch-Makefile.install) = 1bc085d9c1138e24b136566587dfb35bc9bd3b08
+SHA1 (patch-Makefile.system) = 4cc1576e008619d427730a8fa14da7094744b6a3
+SHA1 (patch-c__check) = 731a7e35535a29933677c72bc0a9e956b9e3ff42
SHA1 (patch-common__arm.h) = f08ec61bee8317daac267e90a79f46097b3431c9
SHA1 (patch-cpuid__arm.c) = 20f95cede90cbe548c0cd09ed2e3d37d1d4aeabd
SHA1 (patch-cpuid_ia64.c) = 39649319b8c0a37b8d494e3c03b1ddb6fb616603
+SHA1 (patch-driver_others_Makefile) = 23d746e39f19b27e20574003eaa95dbce581490f
+SHA1 (patch-driver_others_blas__server__callback.c) = 638f285807d7fb6b56b9185e0a8db1eb9d221375
+SHA1 (patch-exports_Makefile) = 677a29b44e7e5a59a227ec48d8e8e41d0b747aee
SHA1 (patch-f_check) = 11f22d0dded9f7b64fb8028693f64fc24f2016a3
SHA1 (patch-interface__ztrmv.c) = 6038946f8fb9542e680178ece2bd0d0d5853baad
+SHA1 (patch-openblas.pc.in) = 9b7097a8b47ac377c485ab67906d1885c29d3593
Index: pkgsrc/math/openblas/version.mk
diff -u pkgsrc/math/openblas/version.mk:1.5 pkgsrc/math/openblas/version.mk:1.6
--- pkgsrc/math/openblas/version.mk:1.5 Sat Feb 17 10:13:19 2024
+++ pkgsrc/math/openblas/version.mk Tue Feb 24 23:09:01 2026
@@ -1,3 +1,3 @@
-# $NetBSD: version.mk,v 1.5 2024/02/17 10:13:19 adam Exp $
+# $NetBSD: version.mk,v 1.6 2026/02/24 23:09:01 thor Exp $
-OPENBLAS_VERSION= 0.3.26
+OPENBLAS_VERSION= 0.3.31
Index: pkgsrc/math/openblas/patches/patch-Makefile
diff -u pkgsrc/math/openblas/patches/patch-Makefile:1.4 pkgsrc/math/openblas/patches/patch-Makefile:1.5
--- pkgsrc/math/openblas/patches/patch-Makefile:1.4 Sat Feb 17 10:13:19 2024
+++ pkgsrc/math/openblas/patches/patch-Makefile Tue Feb 24 23:09:02 2026
@@ -1,83 +1,92 @@
-$NetBSD: patch-Makefile,v 1.4 2024/02/17 10:13:19 adam Exp $
+$NetBSD: patch-Makefile,v 1.5 2026/02/24 23:09:02 thor Exp $
-Remove special library names.
+Use universal LNCMD that works for all library naming schemes (just
+skipping linking if the file is already named like the link).
---- Makefile.orig 2024-01-02 21:25:05.000000000 +0000
+--- Makefile.orig 2026-01-15 22:57:26.000000000 +0000
+++ Makefile
-@@ -134,18 +134,28 @@ shared : libs netlib $(RELA)
+@@ -1,9 +1,5 @@
+ TOPDIR = .
+ include ./Makefile.system
+-LNCMD = ln -fs
+-ifeq ($(FIXED_LIBNAME), 1)
+-LNCMD = true
+-endif
+
+ BLASDIRS = interface driver/level2 driver/level3 driver/others
+
+@@ -95,7 +91,7 @@ ifeq ($(NOFORTRAN), $(filter 0,$(NOFORTR
+ endif
+
+ ifeq ($(OSNAME), WINNT)
+- @-$(LNCMD) $(LIBNAME) $(LIBPREFIX).$(LIBSUFFIX)
++ @-$(call LNCMD,$(LIBNAME),$(LIBPREFIX).$(LIBSUFFIX))
+ endif
+
+ ifneq ($(OSNAME), AIX)
+@@ -147,17 +143,17 @@ shared : libs netlib $(RELA)
ifneq ($(NO_SHARED), 1)
ifeq ($(OSNAME), $(filter $(OSNAME),Linux SunOS Android Haiku FreeBSD DragonFly))
@$(MAKE) -C exports so
-+ifneq ($(LIBSONAME), $(LIBPREFIX).so)
- @ln -fs $(LIBSONAME) $(LIBPREFIX).so
-+endif
-+ifneq ($(LIBSONAME), $(LIBPREFIX).so.$(MAJOR_VERSION))
- @ln -fs $(LIBSONAME) $(LIBPREFIX).so.$(MAJOR_VERSION)
+- @$(LNCMD) $(LIBSONAME) $(LIBPREFIX).so
+- @$(LNCMD) $(LIBSONAME) $(LIBPREFIX).so.$(MAJOR_VERSION)
++ @$(call LNCMD,$(LIBSONAME),$(LIBPREFIX).so)
++ @$(call LNCMD,$(LIBSONAME),$(LIBPREFIX).so.$(MAJOR_VERSION))
endif
-+endif
ifeq ($(OSNAME), $(filter $(OSNAME),OpenBSD NetBSD))
@$(MAKE) -C exports so
-+ifneq ($(LIBSONAME), $(LIBPREFIX).so)
- @ln -fs $(LIBSONAME) $(LIBPREFIX).so
+- @$(LNCMD) $(LIBSONAME) $(LIBPREFIX).so
++ @$(call LNCMD,$(LIBSONAME),$(LIBPREFIX).so)
endif
-+endif
ifeq ($(OSNAME), Darwin)
@$(MAKE) -C exports dyn
-+ifneq ($(LIBDYNNAME), $(LIBPREFIX).dylib)
- @ln -fs $(LIBDYNNAME) $(LIBPREFIX).dylib
-+endif
-+ifneq ($(LIBDYNNAME), $(LIBPREFIX).$(MAJOR_VERSION).dylib)
- @ln -fs $(LIBDYNNAME) $(LIBPREFIX).$(MAJOR_VERSION).dylib
+- @$(LNCMD) $(LIBDYNNAME) $(LIBPREFIX).dylib
+- @$(LNCMD) $(LIBDYNNAME) $(LIBPREFIX).$(MAJOR_VERSION).dylib
++ @$(call LNCMD,$(LIBDYNNAME),$(LIBPREFIX).dylib)
++ @$(call LNCMD,$(LIBDYNNAME),$(LIBPREFIX).$(MAJOR_VERSION).dylib)
endif
-+endif
ifeq ($(OSNAME), WINNT)
@$(MAKE) -C exports dll
- endif
-@@ -229,13 +239,17 @@ ifeq ($(INTERFACE64),1)
+@@ -245,13 +241,13 @@ ifeq ($(INTERFACE64),1)
endif
@echo THELIBNAME=$(LIBNAME) >> Makefile.conf_last
@echo THELIBSONAME=$(LIBSONAME) >> Makefile.conf_last
-+ifneq ($(LIBNAME), $(LIBPREFIX).$(LIBSUFFIX))
- @-ln -fs $(LIBNAME) $(LIBPREFIX).$(LIBSUFFIX)
-+endif
+- @-$(LNCMD) $(LIBNAME) $(LIBPREFIX).$(LIBSUFFIX)
++ @-$(call LNCMD,$(LIBNAME),$(LIBPREFIX).$(LIBSUFFIX))
@touch lib.grd
prof : prof_blas prof_lapack
prof_blas :
-+ifneq ($(LIBNAME_P), $(LIBPREFIX)_p.$(LIBSUFFIX))
- ln -fs $(LIBNAME_P) $(LIBPREFIX)_p.$(LIBSUFFIX)
-+endif
+- $(LNCMD) $(LIBNAME_P) $(LIBPREFIX)_p.$(LIBSUFFIX)
++ $(call LNCMD,$(LIBNAME_P),$(LIBPREFIX)_p.$(LIBSUFFIX))
for d in $(SUBDIRS) ; \
do if test -d $$d; then \
$(MAKE) -C $$d prof || exit 1 ; \
-@@ -246,7 +260,9 @@ ifeq ($(DYNAMIC_ARCH), 1)
+@@ -262,7 +258,7 @@ ifeq ($(DYNAMIC_ARCH), 1)
endif
blas :
-+ifneq ($(LIBNAME), $(LIBPREFIX).$(LIBSUFFIX))
- ln -fs $(LIBNAME) $(LIBPREFIX).$(LIBSUFFIX)
-+endif
+- $(LNCMD) $(LIBNAME) $(LIBPREFIX).$(LIBSUFFIX)
++ $(call LNCMD,$(LIBNAME),$(LIBPREFIX).$(LIBSUFFIX))
for d in $(BLASDIRS) ; \
do if test -d $$d; then \
$(MAKE) -C $$d libs || exit 1 ; \
-@@ -254,7 +270,9 @@ blas :
+@@ -270,7 +266,7 @@ blas :
done
hpl :
-+ifneq ($(LIBNAME), $(LIBPREFIX).$(LIBSUFFIX))
- ln -fs $(LIBNAME) $(LIBPREFIX).$(LIBSUFFIX)
-+endif
+- $(LNCMD) $(LIBNAME) $(LIBPREFIX).$(LIBSUFFIX)
++ $(call LNCMD,$(LIBNAME),$(LIBPREFIX).$(LIBSUFFIX))
for d in $(BLASDIRS) ../laswp exports ; \
do if test -d $$d; then \
$(MAKE) -C $$d $(@F) || exit 1 ; \
-@@ -268,7 +286,9 @@ ifeq ($(DYNAMIC_ARCH), 1)
+@@ -284,7 +280,7 @@ ifeq ($(DYNAMIC_ARCH), 1)
endif
hpl_p :
-+ifneq ($(LIBNAME_P), $(LIBPREFIX)_p.$(LIBSUFFIX))
- ln -fs $(LIBNAME_P) $(LIBPREFIX)_p.$(LIBSUFFIX)
-+endif
+- $(LNCMD) $(LIBNAME_P) $(LIBPREFIX)_p.$(LIBSUFFIX)
++ $(call LNCMD,$(LIBNAME_P),$(LIBPREFIX)_p.$(LIBSUFFIX))
for d in $(SUBDIRS) ../laswp exports ; \
do if test -d $$d; then \
$(MAKE) -C $$d $(@F) || exit 1 ; \
Index: pkgsrc/math/openblas/patches/patch-Makefile.install
diff -u pkgsrc/math/openblas/patches/patch-Makefile.install:1.7 pkgsrc/math/openblas/patches/patch-Makefile.install:1.8
--- pkgsrc/math/openblas/patches/patch-Makefile.install:1.7 Sun Oct 15 22:08:50 2023
+++ pkgsrc/math/openblas/patches/patch-Makefile.install Tue Feb 24 23:09:02 2026
@@ -1,11 +1,32 @@
-$NetBSD: patch-Makefile.install,v 1.7 2023/10/15 22:08:50 thor Exp $
+$NetBSD: patch-Makefile.install,v 1.8 2026/02/24 23:09:02 thor Exp $
-Second part of removing the special library names.
-Separate options for "install" (needed at least on Darwin).
+Reform library linking commands to work for any library naming setup, ensuring
+that we got the generic libopenblas.so.0 and libopenblas.so names, either as
+symlink or as library file.
---- Makefile.install.orig 2023-09-03 20:58:32.000000000 +0000
+Remove duplicate definition of SUFFIX64.
+
+Simplify and fix the pkg-config file for FIXED_LIBNAME.
+
+--- Makefile.install.orig 2026-01-15 22:57:26.000000000 +0000
+++ Makefile.install
-@@ -17,7 +17,7 @@ PKG_EXTRALIB := $(EXTRALIB)
+@@ -2,15 +2,11 @@ TOPDIR = .
+ export GOTOBLAS_MAKEFILE = 1
+ -include $(TOPDIR)/Makefile.conf_last
+ include ./Makefile.system
+-LNCMD = ln -fs
+
+ ifdef THELIBNAME
+ LIBNAME=$(THELIBNAME)
+ LIBSONAME=$(THELIBSONAME)
+ endif
+-ifeq ($(FIXED_LIBNAME), 1)
+-LNCMD = true
+-endif
+ ifeq ($(INTERFACE64),1)
+ USE_64BITINT=1
+ endif
+@@ -32,7 +28,7 @@ PKG_EXTRALIB := $(EXTRALIB)
ifeq ($(INTERFACE64),1)
SUFFIX64=64
endif
@@ -14,84 +35,75 @@ Separate options for "install" (needed a
ifeq ($(USE_OPENMP), 1)
ifeq ($(C_COMPILER), PGI)
-@@ -90,29 +90,37 @@ endif
- ifneq ($(NO_STATIC),1)
+@@ -124,29 +120,23 @@ ifneq ($(NO_STATIC),1)
@echo Copying the static library to $(DESTDIR)$(OPENBLAS_LIBRARY_DIR)
@install -m644 $(LIBNAME) "$(DESTDIR)$(OPENBLAS_LIBRARY_DIR)"
-+ifneq ($(LIBNAME), $(LIBPREFIX).$(LIBSUFFIX))
@cd "$(DESTDIR)$(OPENBLAS_LIBRARY_DIR)" ; \
- ln -fs $(LIBNAME) $(LIBPREFIX).$(LIBSUFFIX)
+- $(LNCMD) $(LIBNAME) $(LIBPREFIX).$(LIBSUFFIX)
++ $(call LNCMD,$(LIBNAME),$(LIBPREFIX).$(LIBSUFFIX))
endif
-+endif
#for install shared library
ifneq ($(NO_SHARED),1)
@echo Copying the shared library to $(DESTDIR)$(OPENBLAS_LIBRARY_DIR)
- ifeq ($(OSNAME), $(filter $(OSNAME),Linux SunOS Android Haiku FreeBSD DragonFly))
+-ifeq ($(OSNAME), $(filter $(OSNAME),Linux SunOS Android Haiku FreeBSD DragonFly))
++ifeq ($(OSNAME), $(filter $(OSNAME),Linux SunOS Android Haiku FreeBSD DragonFly OpenBSD NetBSD))
@install -m755 $(LIBSONAME) "$(DESTDIR)$(OPENBLAS_LIBRARY_DIR)"
@cd "$(DESTDIR)$(OPENBLAS_LIBRARY_DIR)" ; \
-- ln -fs $(LIBSONAME) $(LIBPREFIX).so ; \
-- ln -fs $(LIBSONAME) $(LIBPREFIX).so.$(MAJOR_VERSION)
-+ if ! test $(LIBSONAME) = $(LIBPREFIX).so; then \
-+ ln -fs $(LIBSONAME) $(LIBPREFIX).so ; fi ; \
-+ if ! test $(LIBSONAME) = $(LIBPREFIX).so.$(MAJOR_VERSION); then \
-+ ln -fs $(LIBSONAME) $(LIBPREFIX).so.$(MAJOR_VERSION); fi
- endif
-
- ifeq ($(OSNAME), $(filter $(OSNAME),OpenBSD NetBSD))
- @cp $(LIBSONAME) "$(DESTDIR)$(OPENBLAS_LIBRARY_DIR)"
-+ifneq ($(LIBSONAME), $(LIBPREFIX).so)
- @cd "$(DESTDIR)$(OPENBLAS_LIBRARY_DIR)" ; \
- ln -fs $(LIBSONAME) $(LIBPREFIX).so
+- $(LNCMD) $(LIBSONAME) $(LIBPREFIX).so ; \
+- $(LNCMD) $(LIBSONAME) $(LIBPREFIX).so.$(MAJOR_VERSION)
+-endif
+-
+-ifeq ($(OSNAME), $(filter $(OSNAME),OpenBSD NetBSD))
+- @cp $(LIBSONAME) "$(DESTDIR)$(OPENBLAS_LIBRARY_DIR)"
+- @cd "$(DESTDIR)$(OPENBLAS_LIBRARY_DIR)" ; \
+- $(LNCMD) $(LIBSONAME) $(LIBPREFIX).so
++ $(call LNCMD,$(LIBSONAME),$(LIBPREFIX).so) ; \
++ $(call LNCMD,$(LIBSONAME),$(LIBPREFIX).so.$(MAJOR_VERSION))
endif
-+endif
ifeq ($(OSNAME), Darwin)
@-cp $(LIBDYNNAME) "$(DESTDIR)$(OPENBLAS_LIBRARY_DIR)"
@-install_name_tool -id "$(OPENBLAS_LIBRARY_DIR)/$(LIBPREFIX).$(MAJOR_VERSION).dylib" "$(DESTDIR)$(OPENBLAS_LIBRARY_DIR)/$(LIBDYNNAME)"
@cd "$(DESTDIR)$(OPENBLAS_LIBRARY_DIR)" ; \
-+ if ! test $(LIBDYNNAME) = $(LIBPREFIX).dylib; then \
- ln -fs $(LIBDYNNAME) $(LIBPREFIX).dylib ; \
-+ fi ; \
- ln -fs $(LIBDYNNAME) $(LIBPREFIX).$(MAJOR_VERSION).dylib
+- $(LNCMD) $(LIBDYNNAME) $(LIBPREFIX).dylib ; \
+- $(LNCMD) $(LIBDYNNAME) $(LIBPREFIX).$(MAJOR_VERSION).dylib
++ $(call LNCMD,$(LIBDYNNAME),$(LIBPREFIX).dylib) ; \
++ $(call LNCMD,$(LIBDYNNAME),$(LIBPREFIX).$(MAJOR_VERSION).dylib)
endif
ifeq ($(OSNAME), WINNT)
-@@ -140,16 +148,20 @@ endif
- ifneq ($(NO_STATIC),1)
+ @-cp $(LIBDLLNAME) "$(DESTDIR)$(OPENBLAS_BINARY_DIR)"
+@@ -174,30 +164,23 @@ ifneq ($(NO_STATIC),1)
@echo Copying the static library to $(DESTDIR)$(OPENBLAS_LIBRARY_DIR)
@installbsd -c -m 644 $(LIBNAME) "$(DESTDIR)$(OPENBLAS_LIBRARY_DIR)"
-+ifneq ($(LIBNAME), $(LIBPREFIX).$(LIBSUFFIX))
@cd "$(DESTDIR)$(OPENBLAS_LIBRARY_DIR)" ; \
- ln -fs $(LIBNAME) $(LIBPREFIX).$(LIBSUFFIX)
+- $(LNCMD) $(LIBNAME) $(LIBPREFIX).$(LIBSUFFIX)
++ $(call LNCMD,$(LIBNAME),$(LIBPREFIX).$(LIBSUFFIX))
endif
-+endif
#for install shared library
ifneq ($(NO_SHARED),1)
@echo Copying the shared library to $(DESTDIR)$(OPENBLAS_LIBRARY_DIR)
@installbsd -c -m 755 $(LIBSONAME) "$(DESTDIR)$(OPENBLAS_LIBRARY_DIR)"
@cd "$(DESTDIR)$(OPENBLAS_LIBRARY_DIR)" ; \
-- ln -fs $(LIBSONAME) $(LIBPREFIX).so ; \
-- ln -fs $(LIBSONAME) $(LIBPREFIX).so.$(MAJOR_VERSION)
-+ if ! test $(LIBSONAME) = $(LIBPREFIX).so; then \
-+ ln -fs $(LIBSONAME) $(LIBPREFIX).so ; fi ; \
-+ if ! test $(LIBSONAME) = $(LIBPREFIX).so.$(MAJOR_VERSION); then \
-+ ln -fs $(LIBSONAME) $(LIBPREFIX).so.$(MAJOR_VERSION); fi
+- $(LNCMD) $(LIBSONAME) $(LIBPREFIX).so ; \
+- $(LNCMD) $(LIBSONAME) $(LIBPREFIX).so.$(MAJOR_VERSION)
++ $(call LNCMD,$(LIBSONAME),$(LIBPREFIX).so) ; \
++ $(call LNCMD,$(LIBSONAME),$(LIBPREFIX).so.$(MAJOR_VERSION))
endif
endif
-@@ -158,7 +170,7 @@ endif
- ifeq ($(INTERFACE64),1)
- SUFFIX64=64
- endif
-- PKGFILE="$(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)/$(LIBSONAMEBASE)$(SUFFIX64).pc"
-+ PKGFILE="$(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)/$(LIBNAMEBASE).pc"
- @echo Generating $(LIBSONAMEBASE)$(SUFFIX64).pc in "$(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)"
+ #Generating openblas.pc
+-ifeq ($(INTERFACE64),1)
+- SUFFIX64=64
+-endif
+- PKGFILE="$(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)/$(LIBSONAMEBASE)$(SUFFIX64).pc"
+-
+- @echo Generating $(LIBSONAMEBASE)$(SUFFIX64).pc in "$(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)"
++ @echo Generating "$$(basename "$(PKGFILE)")" in "$$(dirname "$(PKGFILE)")"
@echo 'libdir='$(OPENBLAS_LIBRARY_DIR) > "$(PKGFILE)"
-@@ -167,7 +179,7 @@ endif
- @echo 'openblas_config= USE_64BITINT='$(INTERFACE64) 'DYNAMIC_ARCH='$(DYNAMIC_ARCH) 'DYNAMIC_OLDER='$(DYNAMIC_OLDER) 'NO_CBLAS='$(NO_CBLAS) 'NO_LAPACK='$(NO_LAPACK) 'NO_LAPACKE='$(NO_LAPACKE)
'NO_AFFINITY='$(NO_AFFINITY) 'USE_OPENMP='$(USE_OPENMP) $(CORE) 'MAX_THREADS='$(NUM_THREADS)>> "$(PKGFILE)"
- @echo 'version='$(VERSION) >> "$(PKGFILE)"
- @echo 'extralib='$(PKG_EXTRALIB) >> "$(PKGFILE)"
-- @cat openblas.pc.in >> "$(PKGFILE)"
-+ @cat openblas.pc.in | sed -e 's,-lopenblas[^[:space:]]*,-l$(LIBNAMEBASE),' >> "$(PKGFILE)"
-
-
- #Generating OpenBLASConfig.cmake
+- @echo 'libprefix='$(LIBNAMEPREFIX) >> "$(PKGFILE)"
+- @echo 'libnamesuffix='$(LIBNAMESUFFIX) >> "$(PKGFILE)"
+- @echo 'libsuffix='$(SYMBOLSUFFIX) >> "$(PKGFILE)"
++ @echo 'libname='$(LIBLINKPREFIX) >> "$(PKGFILE)"
+ @echo 'includedir='$(OPENBLAS_INCLUDE_DIR) >> "$(PKGFILE)"
+ @echo 'omp_opt='$(FOMP_OPT) >> "$(PKGFILE)"
+ @echo 'openblas_config= USE_64BITINT='$(INTERFACE64) 'DYNAMIC_ARCH='$(DYNAMIC_ARCH) 'DYNAMIC_OLDER='$(DYNAMIC_OLDER) 'NO_CBLAS='$(NO_CBLAS) 'NO_LAPACK='$(NO_LAPACK) 'NO_LAPACKE='$(NO_LAPACKE)
'NO_AFFINITY='$(NO_AFFINITY) 'USE_OPENMP='$(USE_OPENMP) $(TARGET) 'MAX_THREADS='$(NUM_THREADS)>> "$(PKGFILE)"
Index: pkgsrc/math/openblas/patches/patch-Makefile.system
diff -u pkgsrc/math/openblas/patches/patch-Makefile.system:1.3 pkgsrc/math/openblas/patches/patch-Makefile.system:1.4
--- pkgsrc/math/openblas/patches/patch-Makefile.system:1.3 Sat May 29 19:57:21 2021
+++ pkgsrc/math/openblas/patches/patch-Makefile.system Tue Feb 24 23:09:02 2026
@@ -1,35 +1,66 @@
-$NetBSD: patch-Makefile.system,v 1.3 2021/05/29 19:57:21 thor Exp $
+$NetBSD: patch-Makefile.system,v 1.4 2026/02/24 23:09:02 thor Exp $
-Stable library names, determined by our choice only.
+Fix FIXED_LIBNAME to result in a primary library with the usual so.0 ending,
+and matching SONAME, with the .so being a symlink. This is the expected
+setup for a generic library that does not encode every release version or
+build settings in its name.
---- Makefile.system.orig 2021-05-02 21:50:22.000000000 +0000
+Define universal LNCMD that works for all library naming schemes (just
+skipping linking if the file is already named like the link).
+
+--- Makefile.system.orig 2026-01-15 22:57:26.000000000 +0000
+++ Makefile.system
-@@ -1510,6 +1510,10 @@ ifndef LIBSUFFIX
- LIBSUFFIX = a
+@@ -2,6 +2,9 @@
+ # Include user definition
+ #
+
++# Common safe link command, just put here in lack of a better common place.
++LNCMD = if ! test "$(1)" = "$(2)"; then ln -fs "$(1)" "$(2)"; fi
++
+ # TO suppress recursive includes
+ INCLUDED = 1
+
+@@ -1611,10 +1614,11 @@ else
+ LIBNAMEBASE = $(SYMPREFIX)$(LIBSONAMEBASE)$(SYMSUFFIX)$(LIBNAMESUFFIX)
endif
-+ifeq ($(FIXED_LIBNAME), 1)
-+LIBNAME = $(LIBPREFIX).$(LIBSUFFIX)
-+LIBNAME_P = $(LIBPREFIX)_p.$(LIBSUFFIX)
-+else
- ifneq ($(DYNAMIC_ARCH), 1)
- ifndef SMP
- LIBNAME = $(LIBPREFIX)_$(LIBCORE)$(REVISION).$(LIBSUFFIX)
-@@ -1527,12 +1531,16 @@ LIBNAME = $(LIBPREFIX)p$(REVISION).$(LI
- LIBNAME_P = $(LIBPREFIX)p$(REVISION)_p.$(LIBSUFFIX)
++LIBLINKPREFIX=$(LIBNAMEPREFIX)$(LIBNAMEBASE)
+ ifeq ($(OSNAME), CYGWIN_NT)
+-LIBPREFIX = cyg$(LIBNAMEPREFIX)$(LIBNAMEBASE)
++LIBPREFIX = cyg$(LIBLINKPREFIX)
+ else
+-LIBPREFIX = lib$(LIBNAMEPREFIX)$(LIBNAMEBASE)
++LIBPREFIX = lib$(LIBLINKPREFIX)
+ endif
+
+ KERNELDIR = $(TOPDIR)/kernel/$(ARCH)
+@@ -1814,15 +1818,27 @@ LIBNAME_P = $(LIBPREFIX)p$(REVISION)_p.$
endif
endif
--
-+endif
+
++# FIXED_LIBNAME means to fix the library file name to match the simple soname,
++# without revision and CPU name.
+ ifeq ($(FIXED_LIBNAME),1)
+- LIBNAME = lib$(LIBNAMEPREFIX)$(LIBSONAMEBASE)$(LIBNAMESUFFIX).$(LIBSUFFIX)
+- LIBNAME_P = lib$(LIBNAMEPREFIX)$(LISOBNAMEBASE)$(LIBNAMESUFFIX)_p.$(LIBSUFFIX)
++ LIBNAME = $(LIBPREFIX).$(LIBSUFFIX)
++ LIBNAME_P = $(LIBPREFIX)_p.$(LIBSUFFIX)
+ endif
LIBDLLNAME = $(LIBPREFIX).dll
IMPLIBNAME = lib$(LIBNAMEBASE).dll.a
- ifneq ($(OSNAME), AIX)
-+ifeq ($(FIXED_LIBNAME), 1)
++# Keep major version in SONAME also for fixed libname. Primary lib
++# file is libopenblas_foobar.so.0 and libopenblas_foobar.so is a link.
++ifeq ($(FIXED_LIBNAME),1)
+LIBSONAME = $(LIBNAME:.$(LIBSUFFIX)=.so).$(MAJOR_VERSION)
++LIBDYNNAME = $(LIBNAME:$(LIBSUFFIX)=).$(MAJOR_VERSION).dylib
+else
++# Other case uses LIBPREFIX for SONAME. Primary lib file is
++# libopenblas_cputypep-0.x.y.so, libopenblas.so.0 and libopenblas.so
++# are symlinks.
LIBSONAME = $(LIBNAME:.$(LIBSUFFIX)=.so)
+ LIBDYNNAME = $(LIBNAME:.$(LIBSUFFIX)=.dylib)
+endif
- else
- LIBSONAME = $(LIBNAME:.$(LIBSUFFIX)=.a)
- endif
+ LIBDEFNAME = $(LIBNAME:.$(LIBSUFFIX)=.def)
+ LIBEXPNAME = $(LIBNAME:.$(LIBSUFFIX)=.exp)
+ LIBZIPNAME = $(LIBNAME:.$(LIBSUFFIX)=.zip)
Index: pkgsrc/math/openblas/patches/patch-c__check
diff -u pkgsrc/math/openblas/patches/patch-c__check:1.1 pkgsrc/math/openblas/patches/patch-c__check:1.2
--- pkgsrc/math/openblas/patches/patch-c__check:1.1 Thu Apr 25 10:02:07 2024
+++ pkgsrc/math/openblas/patches/patch-c__check Tue Feb 24 23:09:02 2026
@@ -1,6 +1,7 @@
-$NetBSD: patch-c__check,v 1.1 2024/04/25 10:02:07 jperkin Exp $
+$NetBSD: patch-c__check,v 1.2 2026/02/24 23:09:02 thor Exp $
Do not apply broken -Y handling on SunOS.
+Note: Should this also include the -L case like f_check?
--- c_check.orig 2024-01-02 21:25:05.000000000 +0000
+++ c_check
Added files:
Index: pkgsrc/math/openblas/patches/patch-driver_others_Makefile
diff -u /dev/null pkgsrc/math/openblas/patches/patch-driver_others_Makefile:1.1
--- /dev/null Tue Feb 24 23:09:03 2026
+++ pkgsrc/math/openblas/patches/patch-driver_others_Makefile Tue Feb 24 23:09:02 2026
@@ -0,0 +1,21 @@
+$NetBSD: patch-driver_others_Makefile,v 1.1 2026/02/24 23:09:02 thor Exp $
+
+Un-break non-SMP build (linktest) by provding the dummy callback setter.
+
+--- driver/others/Makefile.orig 2026-01-15 22:57:26.000000000 +0000
++++ driver/others/Makefile
+@@ -1,12 +1,12 @@
+ TOPDIR = ../..
+ include ../../Makefile.system
+
+-COMMONOBJS = memory.$(SUFFIX) xerbla.$(SUFFIX) c_abs.$(SUFFIX) z_abs.$(SUFFIX) openblas_set_num_threads.$(SUFFIX) openblas_get_num_threads.$(SUFFIX) openblas_get_num_procs.$(SUFFIX)
openblas_get_config.$(SUFFIX) openblas_get_parallel.$(SUFFIX) openblas_error_handle.$(SUFFIX) openblas_env.$(SUFFIX)
++COMMONOBJS = memory.$(SUFFIX) xerbla.$(SUFFIX) c_abs.$(SUFFIX) z_abs.$(SUFFIX) openblas_set_num_threads.$(SUFFIX) openblas_get_num_threads.$(SUFFIX) openblas_get_num_procs.$(SUFFIX)
openblas_get_config.$(SUFFIX) openblas_get_parallel.$(SUFFIX) openblas_error_handle.$(SUFFIX) openblas_env.$(SUFFIX) blas_server_callback.$(SUFFIX)
+
+ #COMMONOBJS += slamch.$(SUFFIX) slamc3.$(SUFFIX) dlamch.$(SUFFIX) dlamc3.$(SUFFIX)
+
+ ifdef SMP
+-COMMONOBJS += blas_server.$(SUFFIX) divtable.$(SUFFIX) blasL1thread.$(SUFFIX) blas_server_callback.$(SUFFIX)
++COMMONOBJS += blas_server.$(SUFFIX) divtable.$(SUFFIX) blasL1thread.$(SUFFIX)
+ ifneq ($(NO_AFFINITY), 1)
+ COMMONOBJS += init.$(SUFFIX)
+ endif
Index: pkgsrc/math/openblas/patches/patch-driver_others_blas__server__callback.c
diff -u /dev/null pkgsrc/math/openblas/patches/patch-driver_others_blas__server__callback.c:1.1
--- /dev/null Tue Feb 24 23:09:03 2026
+++ pkgsrc/math/openblas/patches/patch-driver_others_blas__server__callback.c Tue Feb 24 23:09:02 2026
@@ -0,0 +1,27 @@
+$NetBSD: patch-driver_others_blas__server__callback.c,v 1.1 2026/02/24 23:09:02 thor Exp $
+
+Un-break non-SMP build (linktest) by provding the dummy callback setter.
+
+--- driver/others/blas_server_callback.c.orig 2026-01-15 22:57:26.000000000 +0000
++++ driver/others/blas_server_callback.c
+@@ -1,12 +1,17 @@
+ #include "common.h"
+
++#ifdef SMP_SERVER
+ /* global variable to change threading backend from openblas-managed to caller-managed */
+ openblas_threads_callback openblas_threads_callback_ = 0;
++#endif
+
+ /* non-threadsafe function should be called before any other
+ openblas function to change how threads are managed */
+
+ void openblas_set_threads_callback_function(openblas_threads_callback callback)
+ {
+- openblas_threads_callback_ = callback;
+-}
+\ Kein Zeilenumbruch am Dateiende.
++/* Dummy for single-threaded build, just like the other thread API functions. */
++#ifdef SMP_SERVER
++ openblas_threads_callback_ = callback;
++#endif
++}
Index: pkgsrc/math/openblas/patches/patch-exports_Makefile
diff -u /dev/null pkgsrc/math/openblas/patches/patch-exports_Makefile:1.1
--- /dev/null Tue Feb 24 23:09:03 2026
+++ pkgsrc/math/openblas/patches/patch-exports_Makefile Tue Feb 24 23:09:02 2026
@@ -0,0 +1,24 @@
+$NetBSD: patch-exports_Makefile,v 1.1 2026/02/24 23:09:02 thor Exp $
+
+Fix SONAME for FIXED_LIBNAME (adding major version suffix in Makefile.system).
+
+--- exports/Makefile.orig 2026-01-15 22:57:26.000000000 +0000
++++ exports/Makefile
+@@ -140,7 +140,7 @@ libgoto_hpl.def : $(GENSYM)
+
+ ifeq ($(OSNAME), Darwin)
+ ifeq ($(FIXED_LIBNAME),1)
+-INTERNALNAME = $(LIBPREFIX).dylib
++INTERNALNAME = $(LIBDYNNAME)
+ else
+ INTERNALNAME = $(LIBPREFIX).$(MAJOR_VERSION).dylib
+ endif
+@@ -181,7 +181,7 @@ FEXTRALIB += -lm
+ EXTRALIB += -lm
+ else
+ ifeq ($(FIXED_LIBNAME),1)
+-INTERNALNAME = $(LIBPREFIX).so
++INTERNALNAME = $(LIBSONAME)
+ else
+ INTERNALNAME = $(LIBPREFIX).so.$(MAJOR_VERSION)
+ endif
Index: pkgsrc/math/openblas/patches/patch-openblas.pc.in
diff -u /dev/null pkgsrc/math/openblas/patches/patch-openblas.pc.in:1.1
--- /dev/null Tue Feb 24 23:09:03 2026
+++ pkgsrc/math/openblas/patches/patch-openblas.pc.in Tue Feb 24 23:09:02 2026
@@ -0,0 +1,14 @@
+$NetBSD: patch-openblas.pc.in,v 1.1 2026/02/24 23:09:02 thor Exp $
+
+Simplify and fix the pkg-config file for FIXED_LIBNAME.
+
+--- openblas.pc.in.orig 2026-01-15 22:57:26.000000000 +0000
++++ openblas.pc.in
+@@ -2,6 +2,6 @@ Name: openblas
+ Description: OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version
+ Version: ${version}
+ URL: https://github.com/xianyi/OpenBLAS
+-Libs: -L${libdir} -l${libprefix}openblas${libsuffix}${libnamesuffix}
++Libs: -L${libdir} -l${libname}
+ Libs.private: ${extralib}
+ Cflags: -I${includedir} ${omp_opt}
Home |
Main Index |
Thread Index |
Old Index