OpenMathLib/OpenBLAS

0.3.27 - passed NO_CBLAS = 1 yet build fails at "make -C utest all" with undefined reference to `cblas_zscal'

aadler opened this issue · 10 comments

I have been building OpenBLAS for use with R for over a decade now, thank you!

I am on an Intel i7-8700K (Haswell) using Windows 64 bit and GCC 13.2 as packaged by Rtools44.

With version 0.3.27, I pass NO_CBLAS as usual, but the compilation failed with the error below. I will post the complete Makefile.rule—the only file I adjust—below the error. This has not happened before. Both libopenblas_haswell-r0.3.27.a and libopenblas.a exist in the parent directory. The error happens in utest. Are the libraries complete and able to be used and only the test suite failed or should I continue using my compiled 0.3.26 version until this is investigated?

Thank you.

Error

gcc -O2 -DSMALL_MATRIX_OPT -DMS_ABI -DUTEST_CHECK -DSANITY_CHECK -DREFNAME=f_ -DMAX_STACK_ALLOC=2048 -DUSE_LOCKING -Wall -m64 -DF_INTERFACE_GFORT -DNO_LAPACK -DNO_LAPACKE -DMAX_CPU_NUMBER=12 -DMAX_PARALLEL_NUMBER=1 -DBUILD_SINGLE=1 -DBUILD_DOUBLE=1 -DBUILD_COMPLEX=1 -DBUILD_COMPLEX16=1 -DVERSION=\"0.3.27\" -msse3 -mssse3 -msse4.1 -mavx -mavx2 -mavx2 -UASMNAME -UASMFNAME -UNAME -UCNAME -UCHAR_NAME -UCHAR_CNAME -DASMNAME= -DASMFNAME=_ -DNAME=_ -DCNAME= -DCHAR_NAME=\"_\" -DCHAR_CNAME=\"\" -DNO_AFFINITY -I..  -o openblas_utest utest_main.o test_min.o test_amax.o test_ismin.o test_rotmg.o test_axpy.o test_dotu.o test_dsdot.o test_swap.o test_rot.o test_dnrm2.o test_zscal.o test_amin.o test_axpby.o ../libopenblas_haswell-r0.3.27.a -defaultlib:advapi32 -defaultlib:advapi32 -LC:/rtools44/x86_64-w64-mingw32.static.posix/bin/../lib/gcc/x86_64-w64-mingw32.static.posix/13.2.0 -LC:/rtools44/x86_64-w64-mingw32.static.posix/bin/../lib/gcc -LC:/rtools44/x86_64-w64-mingw32.static.posix/bin/../lib/gcc/x86_64-w64-mingw32.static.posix/13.2.0/../../../../lib -LC:/rtools44/x86_64-w64-mingw32.static.posix/bin/../lib/gcc/x86_64-w64-mingw32.static.posix/13.2.0/../../..  -lgfortran -lmoldname -lmingwex -lmsvcrt -lquadmath -lm -lmoldname -lmingwex -lmsvcrt -lpthread -lmoldname -lmingwex -lmsvcrt
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_zscal.o:test_zscal.c:(.text+0x9a): undefined reference to `cblas_zscal'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_zscal.o:test_zscal.c:(.text+0x1fd): undefined reference to `cblas_zscal'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_zscal.o:test_zscal.c:(.text+0x38a): undefined reference to `cblas_zscal'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_zscal.o:test_zscal.c:(.text+0x4e5): undefined reference to `cblas_zscal'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_zscal.o:test_zscal.c:(.text+0x66c): undefined reference to `cblas_zscal'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_zscal.o:test_zscal.c:(.text+0x7f8): more undefined references to `cblas_zscal' follow
collect2.exe: error: ld returned 1 exit status
make[1]: *** [Makefile:73: openblas_utest] Error 1
make[1]: Leaving directory '/c/r/opb/OPB_03.27/utest'
make: *** [Makefile:168: tests] Error 2

Makefile.rule

#
#  Beginning of user configuration
#

# This library's version
VERSION = 0.3.27

# If you set this prefix, the library name will be lib$(LIBNAMESUFFIX)openblas.a
# and lib$(LIBNAMESUFFIX)openblas.so, with a matching soname in the shared library
# 
# LIBNAMEPREFIX = scipy

# If you set the suffix, the library name will be libopenblas_$(LIBNAMESUFFIX).a
# and libopenblas_$(LIBNAMESUFFIX).so. Meanwhile, the soname in shared library
# is libopenblas_$(LIBNAMESUFFIX).so.0.
# LIBNAMESUFFIX = omp

# You can specify the target architecture, otherwise it's
# automatically detected.
# TARGET = PENRYN

# If you want to support multiple architecture in one binary
# DYNAMIC_ARCH = 1

# If you want the full list of x86_64 architectures supported in DYNAMIC_ARCH
# mode (including individual optimizied codes for PENRYN, DUNNINGTON, OPTERON,
# OPTERON_SSE3, ATOM and NANO rather than fallbacks to older architectures)
# DYNAMIC_OLDER = 1

# C compiler including binary type(32bit / 64bit). Default is gcc.
# Don't use Intel Compiler or PGI, it won't generate right codes as I expect.
# CC = gcc

# Fortran compiler. Default is g77.
FC = gfortran

# Even you can specify cross compiler. Meanwhile, please set HOSTCC.

# cross compiler for Windows
# CC = x86_64-w64-mingw32-gcc
# FC = x86_64-w64-mingw32-gfortran

# cross compiler for 32bit ARM
# CC = arm-linux-gnueabihf-gcc
# FC = arm-linux-gnueabihf-gfortran

# cross compiler for 64bit ARM
# CC = aarch64-linux-gnu-gcc
# FC = aarch64-linux-gnu-gfortran


# If you use the cross compiler, please set this host compiler.
# HOSTCC = gcc

# If you need 32bit binary, define BINARY=32, otherwise define BINARY=64
# Please note that AVX is not available on 32-bit.
# Setting BINARY=32 disables AVX/AVX2/AVX-512.
BINARY=64

# About threaded BLAS. It will be automatically detected if you don't
# specify it.
# For force setting for single threaded, specify USE_THREAD = 0
# For force setting for multi  threaded, specify USE_THREAD = 1
USE_THREAD = 0

# If you want to build a single-threaded OpenBLAS, but expect to call this
# from several concurrent threads in some other program, comment this in for
# thread safety. (This is done automatically for USE_THREAD=1 , and should not
# be necessary when USE_OPENMP=1)
USE_LOCKING = 1

# If you're going to use this library with OpenMP, please comment it in.
# This flag is always set for POWER8. Don't set USE_OPENMP = 0 if you're targeting POWER8.
# USE_OPENMP = 1

# The OpenMP scheduler to use - by default this is "static" and you
# will normally not want to change this unless you know that your main
# workload will involve tasks that have highly unbalanced running times
# for individual threads. Changing away from "static" may also adversely
# affect memory access locality in NUMA systems. Setting to "runtime" will
# allow you to select the scheduler from the environment variable OMP_SCHEDULE
# CCOMMON_OPT += -DOMP_SCHED=dynamic

# You can define the maximum number of threads. Basically it should be less
# than or equal to the number of CPU threads. If you don't specify one, it's
# automatically detected by the build system.
# If SMT (aka. HT) is enabled on the system, it may or may not be beneficial to 
# restrict NUM_THREADS to the number of physical cores. By default, the automatic 
# detection includes logical CPUs, thus allowing the use of SMT.
# Users may opt at runtime to use less than NUM_THREADS threads.
#
# Note for package maintainers: you can build OpenBLAS with a large NUM_THREADS
# value (eg. 32-256) if you expect your users to use that many threads. Due to the way
# some internal structures are allocated, using a large NUM_THREADS value has a RAM
# footprint penalty, even if users reduce the actual number of threads at runtime.
# NUM_THREADS = 24

# If you have enabled USE_OPENMP and your application would call
# OpenBLAS's calculation API from multiple threads, please comment this in.
# This flag defines how many instances of OpenBLAS's calculation API can actually
# run in parallel. If more than NUM_PARALLEL threads call OpenBLAS's calculation API,
# they need to wait for the preceding API calls to finish or risk data corruption.
# NUM_PARALLEL = 2

# When multithreading, OpenBLAS needs to use a memory buffer for communicating
# and collating results for individual subranges of the original matrix. Since
# the original GotoBLAS of the early 2000s, the default size of this buffer has
# been set at a value of 32<<20 (which is 32MB) on x86_64 , twice that on PPC.
# If you expect to handle large problem sizes (beyond about 30000x30000) uncomment
# this line and adjust the (32<<n) factor if necessary. Usually an insufficient value
# manifests itself as a crash in the relevant scal kernel (sscal_k, dscal_k etc) 
# BUFFERSIZE = 25

# If you don't need to install the static library, please comment this in.
# NO_STATIC = 1

# If you don't need to generate the shared library, please comment this in.
NO_SHARED = 1

# If you don't need the CBLAS interface, please comment this in.
NO_CBLAS = 1

# If you only want the CBLAS interface without installing a Fortran compiler,
# please comment this in.
# ONLY_CBLAS = 1

# If you don't need LAPACK, please comment this in.
# If you set NO_LAPACK=1, the build system automatically sets NO_LAPACKE=1.
NO_LAPACK = 1

# If you don't need LAPACKE (C Interface to LAPACK), please comment this in.
# NO_LAPACKE = 1

# Build LAPACK Deprecated functions since LAPACK 3.6.0
BUILD_LAPACK_DEPRECATED = 1

# Build RecursiveLAPACK on top of LAPACK
# BUILD_RELAPACK = 1
# Have RecursiveLAPACK actually replace standard LAPACK routines instead of 
# just adding its equivalents with a RELAPACK_ prefix
# RELAPACK_REPLACE = 1

# If you want to use the legacy threaded Level 3 implementation.
# USE_SIMPLE_THREADED_LEVEL3 = 1

# If you want to use the new, still somewhat experimental code that uses
# thread-local storage instead of a central memory buffer in memory.c
# Note that if your system uses GLIBC, it needs to have at least glibc 2.21
# for this to work.
# USE_TLS = 1

# If you want to drive whole 64bit region by BLAS. Not all Fortran
# compilers support this. It's safe to keep this commented out if you
# are not sure. (This is equivalent to the "-i8" ifort option).
# INTERFACE64 = 1

# Unfortunately most of kernel won't give us high quality buffer.
# BLAS tries to find the best region before entering main function,
# but it will consume time. If you don't like it, you can disable one.
# NO_WARMUP = 1

# Comment this in if you want to disable OpenBLAS's CPU/Memory affinity handling.
# This feature is only implemented on Linux, and is always disabled on other platforms.
# Enabling affinity handling may improve performance, especially on NUMA systems, but 
# it may conflict with certain applications that also try to manage affinity.
# This conflict can result in threads of the application calling OpenBLAS ending up locked
# to the same core(s) as OpenBLAS, possibly binding all threads to a single core.
# For this reason, affinity handling is disabled by default. Can be safely enabled if nothing
# else modifies affinity settings.
# Note: enabling affinity has been known to cause problems with NumPy and R
NO_AFFINITY = 1

# If you are compiling for Linux and you have more than 16 numa nodes or more than 256 cpus
# BIGNUMA = 1

# Don't use AVX kernel on Sandy Bridge. It is compatible with old compilers
# and OS. However, the performance is low.
# NO_AVX = 1

# Don't use Haswell optimizations if binutils is too old (e.g. RHEL6)
# NO_AVX2 = 1

# Don't use SkylakeX optimizations if binutils or compiler are too old (the build
# system will try to determine this automatically)
# NO_AVX512 = 1

# Don't use parallel make.
NO_PARALLEL_MAKE = 1

# Force number of make jobs. The default is the number of logical CPU of the host.
# This is particularly useful when using distcc.
# A negative value will disable adding a -j flag to make, allowing to use a parent
# make -j value. This is useful to call OpenBLAS make from an other project
# makefile
# MAKE_NB_JOBS = 2

# If you would like to know minute performance report of GotoBLAS.
# FUNCTION_PROFILE = 1

# Support for IEEE quad precision(it's *real* REAL*16)( under testing)
# This option should not be used - it is a holdover from unfinished code present
# in the original GotoBLAS2 library that may be usable as a starting point but
# is not even expected to compile in its present form.
# QUAD_PRECISION = 1

# Theads are still working for a while after finishing BLAS operation
# to reduce thread activate/deactivate overhead. You can determine
# time out to improve performance. This number should be from 4 to 30
# which corresponds to (1 << n) cycles. For example, if you set to 26,
# thread will be running for (1 << 26) cycles(about 25ms on 3.0GHz
# system). Also you can control this number by THREAD_TIMEOUT
# CCOMMON_OPT	+= -DTHREAD_TIMEOUT=26

# Using special device driver for mapping physically contiguous memory
# to the user space. If bigphysarea is enabled, it will use it.
# DEVICEDRIVER_ALLOCATION = 1

# If you need to synchronize FP CSR between threads (for x86/x86_64 and aarch64 only).
# CONSISTENT_FPCSR = 1

# If any gemm argument m, n or k is less or equal this threshold, gemm will be execute
# with single thread. (Actually in recent versions this is a factor proportional to the
# number of floating point operations necessary for the given problem size, no longer
# an individual dimension). You can use this setting to avoid the overhead of multi-
# threading in small matrix sizes. The default value is 4, but values as high as 50 have 
# been reported to be optimal for certain workloads (50 is the recommended value for Julia).
# GEMM_MULTITHREAD_THRESHOLD = 4

# If you need sanity check by comparing results to reference BLAS. It'll be very
# slow (Not implemented yet).
# SANITY_CHECK = 1

# The installation directory.
# PREFIX = /opt/OpenBLAS

# Common Optimization Flag;
# The default -O2 is enough.
# Flags for POWER8 are defined in Makefile.power. Don't modify COMMON_OPT
# COMMON_OPT = -O2

# gfortran option for LAPACK to improve thread-safety
# It is enabled by default in Makefile.system for gfortran
# Flags for POWER8 are defined in Makefile.power. Don't modify FCOMMON_OPT
# FCOMMON_OPT = -frecursive

# Profiling flags
COMMON_PROF = -pg

# Build Debug version
# DEBUG = 1

# Set maximum stack allocation.
# The default value is 2048. 0 disable stack allocation a may reduce GER and GEMV
# performance. For details, https://github.com/xianyi/OpenBLAS/pull/482
#
# MAX_STACK_ALLOC = 0

# Add a prefix or suffix to all exported symbol names in the shared library.
# Avoid conflicts with other BLAS libraries, especially when using
# 64 bit integer interfaces in OpenBLAS.
# For details, https://github.com/xianyi/OpenBLAS/pull/459
#
# The same prefix and suffix are also added to the library name,
# i.e. you get lib$(SYMBOLPREFIX)openblas$(SYMBOLSUFFIX) rather than libopenblas
#
# SYMBOLPREFIX=
# SYMBOLSUFFIX=

# Run a C++ based thread safety tester after the build is done.
# This is mostly intended as a developer feature to spot regressions, but users and
# package maintainers can enable this if they have doubts about the thread safety of
# the library, given the configuration in this file.
# By default, the thread safety tester launches 52 concurrent calculations at the same
# time.
#
# Please note that the test uses ~1300 MiB of RAM for the DGEMM test.
#
# The test requires CBLAS to be built, a C++11 capable compiler and the presence of
# an OpenMP implementation. If you are cross-compiling this test will probably not
# work at all.
#
# CPP_THREAD_SAFETY_TEST = 1
#
# use this to run only the less memory-hungry GEMV test
# CPP_THREAD_SAFETY_GEMV = 1


# If you want to enable the experimental BFLOAT16 support
# BUILD_BFLOAT16 = 1


# Set the thread number threshold beyond which the job array for the threaded level3 BLAS
# will be allocated on the heap rather than the stack. (This array alone requires 
# NUM_THREADS*NUM_THREADS*128 bytes of memory so should not pose a problem at low cpu
# counts, but obviously it is not the only item that ends up on the stack.
# The default value of 32 ensures that the overall requirement is compatible
# with the default 1MB stacksize imposed by having the Java VM loaded without use
# of its -Xss parameter.
# The value of 160 formerly used from about version 0.2.7 until 0.3.10 is easily compatible
# with the common Linux stacksize of 8MB but will cause crashes with unwary use of the java
# VM e.g. in Octave or with the java-based libhdfs in numpy or scipy code
# BLAS3_MEM_ALLOC_THRESHOLD = 160



# By default the library contains BLAS functions (and LAPACK if selected) for all input types.
# To build a smaller library supporting e.g. only single precision real (SGEMM etc.) or only
# the functions for complex numbers, uncomment the desired type(s) below
# BUILD_SINGLE = 1
# BUILD_DOUBLE = 1
# BUILD_COMPLEX = 1
# BUILD_COMPLEX16 = 1
#
#  End of user configuration
#

This oversight is fixed in #4610 - the test should not have required CBLAS at all, sorry. As it is "only" the test that is broken, the static library is fine to use - however the failed test will prevent the build of the dynamic library from it.

Great, thank you!

Sorry; but when I tried to use the static library when building R, I got the following error. Could it be related?

-------- Building ../../../bin/x64/Rblas.dll --------
gcc  -s -shared  -o ../../../bin/x64/Rblas.dll blas00.o ../../gnuwin32/dllversion.o Rblas.def \
   -L../../../bin/x64 -lR -L"C:/R/OPB/OPB_03.27_1T" -fopenmp -lopenblas
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: cannot export zspmv_: symbol not defined
collect2.exe: error: ld returned 1 exit status
make[4]: *** [Makefile.win:14: ../../../bin/x64/Rblas.dll] Error 1
make[3]: *** [Makefile:227: Rblas] Error 2
make[2]: *** [Makefile:116: rbuild] Error 2
make[1]: *** [Makefile:17: all] Error 2
make: *** [Makefile:392: distribution] Error 2

That is a bit of a gray area - for historical reasons, ZSPMV is in LAPACK although conceptionally it belongs in BLAS. As you specified NO_LAPACK=1, this function gets omitted since 0.3.20 to allow combining the BLAS-only build with an external LAPACK

It's strange though that I did not have that issue with 0.3.26. I can try building LAPACK even though the Windows compile path for R does not allow external LAPACKs. Thanks!

I do not think there was an intentional change lately - guess I need to check if merging the much older risc-v branch introduced some unexpected gift despite updating the branch first :(

Nope, an 0.3.26 built with NO_LAPACK=1 will likewise omit the zspmv symbol (as directed).

Hi @martin-frbg. I tried compiling version 5d678f1 and got the errors below. Hope this helps you pin things down. Thanks!

gcc -O2 -DSMALL_MATRIX_OPT -DMS_ABI -DUTEST_CHECK -DSANITY_CHECK -DREFNAME=f_ -DMAX_STACK_ALLOC=2048 -DUSE_LOCKING -Wall -m64 -DF_INTERFACE_GFORT -DNO_LAPACK -DNO_LAPACKE -DMAX_CPU_NUMBER=12 -DMAX_PARALLEL_NUMBER=1 -DBUILD_SINGLE=1 -DBUILD_DOUBLE=1 -DBUILD_COMPLEX=1 -DBUILD_COMPLEX16=1 -DVERSION=\"0.3.27.dev.5d678f1\" -msse3 -mssse3 -msse4.1 -mavx -mavx2 -mavx2 -UASMNAME -UASMFNAME -UNAME -UCNAME -UCHAR_NAME -UCHAR_CNAME -DASMNAME= -DASMFNAME=_ -DNAME=_ -DCNAME= -DCHAR_NAME=\"_\" -DCHAR_CNAME=\"\" -DNO_AFFINITY -I..  -o openblas_utest_ext utest_main.o test_extensions/xerbla.o test_extensions/common.o test_extensions/test_isamin.o test_extensions/test_idamin.o test_extensions/test_icamin.o test_extensions/test_izamin.o test_extensions/test_ssum.o test_extensions/test_dsum.o test_extensions/test_scsum.o test_extensions/test_dzsum.o test_extensions/test_saxpby.o test_extensions/test_daxpby.o test_extensions/test_caxpby.o test_extensions/test_zaxpby.o test_extensions/test_zaxpyc.o test_extensions/test_caxpyc.o test_extensions/test_samin.o test_extensions/test_damin.o test_extensions/test_scamin.o test_extensions/test_dzamin.o test_extensions/test_scamax.o test_extensions/test_dzamax.o test_extensions/test_drotmg.o test_extensions/test_srotmg.o test_extensions/test_zrotg.o test_extensions/test_crotg.o test_extensions/test_crot.o test_extensions/test_zrot.o test_extensions/test_zscal.o test_extensions/test_cscal.o test_extensions/test_domatcopy.o test_extensions/test_somatcopy.o test_extensions/test_zomatcopy.o test_extensions/test_comatcopy.o test_extensions/test_simatcopy.o test_extensions/test_dimatcopy.o test_extensions/test_cimatcopy.o test_extensions/test_zimatcopy.o test_extensions/test_sgeadd.o test_extensions/test_dgeadd.o test_extensions/test_cgeadd.o test_extensions/test_zgeadd.o test_extensions/test_cgemv_t.o test_extensions/test_zgemv_t.o test_extensions/test_cgemv_n.o test_extensions/test_zgemv_n.o test_extensions/test_sgemmt.o test_extensions/test_dgemmt.o test_extensions/test_cgemmt.o test_extensions/test_zgemmt.o test_extensions/test_ztrmv.o test_extensions/test_ctrmv.o test_extensions/test_ztrsv.o test_extensions/test_ctrsv.o test_extensions/test_zgemm.o test_extensions/test_cgemm.o test_extensions/test_zgbmv.o test_extensions/test_cgbmv.o ../libopenblas_haswell-r0.3.27.dev.5d678f1.a -defaultlib:advapi32 -defaultlib:advapi32 -LC:/rtools44/x86_64-w64-mingw32.static.posix/bin/../lib/gcc/x86_64-w64-mingw32.static.posix/13.2.0 -LC:/rtools44/x86_64-w64-mingw32.static.posix/bin/../lib/gcc -LC:/rtools44/x86_64-w64-mingw32.static.posix/bin/../lib/gcc/x86_64-w64-mingw32.static.posix/13.2.0/../../../../lib -LC:/rtools44/x86_64-w64-mingw32.static.posix/bin/../lib/gcc/x86_64-w64-mingw32.static.posix/13.2.0/../../..  -lgfortran -lmoldname -lmingwex -lmsvcrt -lquadmath -lm -lmoldname -lmingwex -lmsvcrt -lpthread -lmoldname -lmingwex -lmsvcrt
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/common.o:common.c:(.text+0x138): undefined reference to `cblas_snrm2'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/common.o:common.c:(.text+0x1f8): undefined reference to `cblas_dnrm2'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_isamin.o:test_isamin.c:(.text+0xd3a): undefined reference to `cblas_isamin'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_isamin.o:test_isamin.c:(.text+0xdc2): undefined reference to `cblas_isamin'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_isamin.o:test_isamin.c:(.text+0xe0d): undefined reference to `cblas_isamin'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_isamin.o:test_isamin.c:(.text+0xe4d): undefined reference to `cblas_isamin'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_isamin.o:test_isamin.c:(.text+0xe8e): undefined reference to `cblas_isamin'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_isamin.o:test_isamin.c:(.text+0xed1): more undefined references to `cblas_isamin' follow
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_idamin.o:test_idamin.c:(.text+0xd91): undefined reference to `cblas_idamin'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_idamin.o:test_idamin.c:(.text+0xe0a): undefined reference to `cblas_idamin'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_idamin.o:test_idamin.c:(.text+0xe51): undefined reference to `cblas_idamin'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_idamin.o:test_idamin.c:(.text+0xea1): undefined reference to `cblas_idamin'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_idamin.o:test_idamin.c:(.text+0xef3): undefined reference to `cblas_idamin'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_idamin.o:test_idamin.c:(.text+0xf43): more undefined references to `cblas_idamin' follow
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_icamin.o:test_icamin.c:(.text+0xbca): undefined reference to `cblas_icamin'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_icamin.o:test_icamin.c:(.text+0xc5a): undefined reference to `cblas_icamin'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_icamin.o:test_icamin.c:(.text+0xca1): undefined reference to `cblas_icamin'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_icamin.o:test_icamin.c:(.text+0xcf1): undefined reference to `cblas_icamin'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_icamin.o:test_icamin.c:(.text+0xd43): undefined reference to `cblas_icamin'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_icamin.o:test_icamin.c:(.text+0xd93): more undefined references to `cblas_icamin' follow
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_izamin.o:test_izamin.c:(.text+0xd08): undefined reference to `cblas_izamin'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_izamin.o:test_izamin.c:(.text+0xda8): undefined reference to `cblas_izamin'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_izamin.o:test_izamin.c:(.text+0xdf3): undefined reference to `cblas_izamin'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_izamin.o:test_izamin.c:(.text+0xe43): undefined reference to `cblas_izamin'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_izamin.o:test_izamin.c:(.text+0xe96): undefined reference to `cblas_izamin'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_izamin.o:test_izamin.c:(.text+0xee6): more undefined references to `cblas_izamin' follow
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_ssum.o:test_ssum.c:(.text+0x77a): undefined reference to `cblas_ssum'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_ssum.o:test_ssum.c:(.text+0x7d5): undefined reference to `cblas_ssum'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_ssum.o:test_ssum.c:(.text+0x82d): undefined reference to `cblas_ssum'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_ssum.o:test_ssum.c:(.text+0x87e): undefined reference to `cblas_ssum'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_ssum.o:test_ssum.c:(.text+0x8d1): undefined reference to `cblas_ssum'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_ssum.o:test_ssum.c:(.text+0x933): more undefined references to `cblas_ssum' follow
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_dsum.o:test_dsum.c:(.text+0x791): undefined reference to `cblas_dsum'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_dsum.o:test_dsum.c:(.text+0x7f7): undefined reference to `cblas_dsum'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_dsum.o:test_dsum.c:(.text+0x859): undefined reference to `cblas_dsum'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_dsum.o:test_dsum.c:(.text+0x8b3): undefined reference to `cblas_dsum'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_dsum.o:test_dsum.c:(.text+0x913): undefined reference to `cblas_dsum'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_dsum.o:test_dsum.c:(.text+0x976): more undefined references to `cblas_dsum' follow
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_scsum.o:test_scsum.c:(.text+0x7fa): undefined reference to `cblas_scsum'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_scsum.o:test_scsum.c:(.text+0x855): undefined reference to `cblas_scsum'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_scsum.o:test_scsum.c:(.text+0x8b1): undefined reference to `cblas_scsum'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_scsum.o:test_scsum.c:(.text+0x913): undefined reference to `cblas_scsum'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_scsum.o:test_scsum.c:(.text+0x973): undefined reference to `cblas_scsum'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_scsum.o:test_scsum.c:(.text+0x9d6): more undefined references to `cblas_scsum' follow
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_dzsum.o:test_dzsum.c:(.text+0x908): undefined reference to `cblas_dzsum'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_dzsum.o:test_dzsum.c:(.text+0x967): undefined reference to `cblas_dzsum'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_dzsum.o:test_dzsum.c:(.text+0x9c3): undefined reference to `cblas_dzsum'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_dzsum.o:test_dzsum.c:(.text+0xa26): undefined reference to `cblas_dzsum'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_dzsum.o:test_dzsum.c:(.text+0xa86): undefined reference to `cblas_dzsum'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_dzsum.o:test_dzsum.c:(.text+0xaf4): more undefined references to `cblas_dzsum' follow
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_saxpby.o:test_saxpby.c:(.text+0x82f): undefined reference to `cblas_sscal'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_saxpby.o:test_saxpby.c:(.text+0x84e): undefined reference to `cblas_saxpy'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_saxpby.o:test_saxpby.c:(.text+0x873): undefined reference to `cblas_saxpby'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_saxpby.o:test_saxpby.c:(.text+0x8e1): undefined reference to `cblas_sscal'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_saxpby.o:test_saxpby.c:(.text+0x90e): undefined reference to `cblas_saxpy'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_saxpby.o:test_saxpby.c:(.text+0x933): undefined reference to `cblas_saxpby'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_saxpby.o:test_saxpby.c:(.text+0x8c5): undefined reference to `cblas_snrm2'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_daxpby.o:test_daxpby.c:(.text+0x82f): undefined reference to `cblas_dscal'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_daxpby.o:test_daxpby.c:(.text+0x84e): undefined reference to `cblas_daxpy'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_daxpby.o:test_daxpby.c:(.text+0x873): undefined reference to `cblas_daxpby'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_daxpby.o:test_daxpby.c:(.text+0x8e1): undefined reference to `cblas_dscal'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_daxpby.o:test_daxpby.c:(.text+0x90e): undefined reference to `cblas_daxpy'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_daxpby.o:test_daxpby.c:(.text+0x933): undefined reference to `cblas_daxpby'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_daxpby.o:test_daxpby.c:(.text+0x8c8): undefined reference to `cblas_dnrm2'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_caxpby.o:test_caxpby.c:(.text+0x79d): undefined reference to `cblas_cscal'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_caxpby.o:test_caxpby.c:(.text+0x7c0): undefined reference to `cblas_caxpy'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_caxpby.o:test_caxpby.c:(.text+0x7ea): undefined reference to `cblas_caxpby'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_caxpby.o:test_caxpby.c:(.text+0x850): undefined reference to `cblas_cscal'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_caxpby.o:test_caxpby.c:(.text+0x87a): undefined reference to `cblas_caxpy'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_caxpby.o:test_caxpby.c:(.text+0x89d): undefined reference to `cblas_caxpby'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_caxpby.o:test_caxpby.c:(.text+0x836): undefined reference to `cblas_scnrm2'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zaxpby.o:test_zaxpby.c:(.text+0x78d): undefined reference to `cblas_zscal'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zaxpby.o:test_zaxpby.c:(.text+0x7b0): undefined reference to `cblas_zaxpy'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zaxpby.o:test_zaxpby.c:(.text+0x7da): undefined reference to `cblas_zaxpby'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zaxpby.o:test_zaxpby.c:(.text+0x840): undefined reference to `cblas_zscal'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zaxpby.o:test_zaxpby.c:(.text+0x86a): undefined reference to `cblas_zaxpy'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zaxpby.o:test_zaxpby.c:(.text+0x88d): undefined reference to `cblas_zaxpby'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zaxpby.o:test_zaxpby.c:(.text+0x826): undefined reference to `cblas_dznrm2'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_drotmg.o:test_drotmg.c:(.text+0x72e): undefined reference to `cblas_drotmg'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_drotmg.o:test_drotmg.c:(.text+0x8c9): undefined reference to `cblas_drotmg'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_drotmg.o:test_drotmg.c:(.text+0xa61): undefined reference to `cblas_drotmg'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_drotmg.o:test_drotmg.c:(.text+0xbf9): undefined reference to `cblas_drotmg'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_srotmg.o:test_srotmg.c:(.text+0x6da): undefined reference to `cblas_srotmg'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_srotmg.o:test_srotmg.c:(.text+0x85f): undefined reference to `cblas_srotmg'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_srotmg.o:test_srotmg.c:(.text+0x9de): undefined reference to `cblas_srotmg'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_srotmg.o:test_srotmg.c:(.text+0xb5f): undefined reference to `cblas_srotmg'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zrotg.o:test_zrotg.c:(.text+0x80a): undefined reference to `cblas_zrotg'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zrotg.o:test_zrotg.c:(.text+0x923): undefined reference to `cblas_zrotg'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zrotg.o:test_zrotg.c:(.text+0xa3f): undefined reference to `cblas_zrotg'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zrotg.o:test_zrotg.c:(.text+0xb5e): undefined reference to `cblas_zrotg'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zrotg.o:test_zrotg.c:(.text+0xc7e): undefined reference to `cblas_zrotg'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zrotg.o:test_zrotg.c:(.text+0xd9e): more undefined references to `cblas_zrotg' follow
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_crotg.o:test_crotg.c:(.text+0x81e): undefined reference to `cblas_crotg'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_crotg.o:test_crotg.c:(.text+0x947): undefined reference to `cblas_crotg'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_crotg.o:test_crotg.c:(.text+0xa63): undefined reference to `cblas_crotg'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_crotg.o:test_crotg.c:(.text+0xb81): undefined reference to `cblas_crotg'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_crotg.o:test_crotg.c:(.text+0xca1): undefined reference to `cblas_crotg'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_crotg.o:test_crotg.c:(.text+0xdc1): more undefined references to `cblas_crotg' follow
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_crot.o:test_crot.c:(.text+0x11e): undefined reference to `cblas_caxpby'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_crot.o:test_crot.c:(.text+0x142): undefined reference to `cblas_caxpby'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_crot.o:test_crot.c:(.text+0x175): undefined reference to `cblas_csrot'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_crot.o:test_crot.c:(.text+0x1f4): undefined reference to `cblas_scnrm2'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_crot.o:test_crot.c:(.text+0x20b): undefined reference to `cblas_scnrm2'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_crot.o:test_crot.c:(.text+0x2ae): undefined reference to `cblas_caxpby'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_crot.o:test_crot.c:(.text+0x2d2): undefined reference to `cblas_caxpby'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_crot.o:test_crot.c:(.text+0x305): undefined reference to `cblas_csrot'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_crot.o:test_crot.c:(.text+0x343): undefined reference to `cblas_caxpby'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_crot.o:test_crot.c:(.text+0x36e): undefined reference to `cblas_caxpby'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_crot.o:test_crot.c:(.text+0x3a1): undefined reference to `cblas_csrot'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zrot.o:test_zrot.c:(.text+0x11d): undefined reference to `cblas_zaxpby'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zrot.o:test_zrot.c:(.text+0x141): undefined reference to `cblas_zaxpby'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zrot.o:test_zrot.c:(.text+0x174): undefined reference to `cblas_zdrot'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zrot.o:test_zrot.c:(.text+0x1f4): undefined reference to `cblas_dznrm2'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zrot.o:test_zrot.c:(.text+0x20b): undefined reference to `cblas_dznrm2'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zrot.o:test_zrot.c:(.text+0x2ae): undefined reference to `cblas_zaxpby'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zrot.o:test_zrot.c:(.text+0x2d2): undefined reference to `cblas_zaxpby'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zrot.o:test_zrot.c:(.text+0x305): undefined reference to `cblas_zdrot'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zrot.o:test_zrot.c:(.text+0x343): undefined reference to `cblas_zaxpby'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zrot.o:test_zrot.c:(.text+0x36e): undefined reference to `cblas_zaxpby'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zrot.o:test_zrot.c:(.text+0x3a1): undefined reference to `cblas_zdrot'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zscal.o:test_zscal.c:(.text+0xc6): undefined reference to `cblas_zscal'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_cscal.o:test_cscal.c:(.text+0xc9): undefined reference to `cblas_cscal'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_domatcopy.o:test_domatcopy:(.text+0x149): undefined reference to `cblas_domatcopy'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_somatcopy.o:test_somatcopy:(.text+0x149): undefined reference to `cblas_somatcopy'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zomatcopy.o:test_zomatcopy:(.text+0x156): undefined reference to `cblas_zomatcopy'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_comatcopy.o:test_comatcopy:(.text+0x156): undefined reference to `cblas_comatcopy'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_simatcopy.o:test_simatcopy:(.text+0x1e8): undefined reference to `cblas_simatcopy'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_dimatcopy.o:test_dimatcopy:(.text+0x1f8): undefined reference to `cblas_dimatcopy'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_cimatcopy.o:test_cimatcopy:(.text+0x14d): undefined reference to `cblas_cimatcopy'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zimatcopy.o:test_zimatcopy:(.text+0x14d): undefined reference to `cblas_zimatcopy'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_sgeadd.o:test_sgeadd.c:(.text+0x98): undefined reference to `cblas_sgeadd'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_sgeadd.o:test_sgeadd.c:(.text+0x6ff): undefined reference to `cblas_saxpby'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_sgeadd.o:test_sgeadd.c:(.text+0x76f): undefined reference to `cblas_sgeadd'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_dgeadd.o:test_dgeadd.c:(.text+0x98): undefined reference to `cblas_dgeadd'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_dgeadd.o:test_dgeadd.c:(.text+0x6ff): undefined reference to `cblas_daxpby'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_dgeadd.o:test_dgeadd.c:(.text+0x76f): undefined reference to `cblas_dgeadd'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_cgeadd.o:test_cgeadd.c:(.text+0x92): undefined reference to `cblas_cgeadd'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_cgeadd.o:test_cgeadd.c:(.text+0x6f0): undefined reference to `cblas_caxpby'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_cgeadd.o:test_cgeadd.c:(.text+0x756): undefined reference to `cblas_cgeadd'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zgeadd.o:test_zgeadd.c:(.text+0x95): undefined reference to `cblas_zgeadd'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zgeadd.o:test_zgeadd.c:(.text+0x6f0): undefined reference to `cblas_zaxpby'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zgeadd.o:test_zgeadd.c:(.text+0x756): undefined reference to `cblas_zgeadd'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_cgemv_t.o:test_cgemv_t.c:(.text+0xb2): undefined reference to `cblas_cgemv'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_cgemv_t.o:test_cgemv_t.c:(.text+0xa85): undefined reference to `cblas_comatcopy'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_cgemv_t.o:test_cgemv_t.c:(.text+0xaef): undefined reference to `cblas_cdotu'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_cgemv_t.o:test_cgemv_t.c:(.text+0xb58): undefined reference to `cblas_caxpby'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_cgemv_t.o:test_cgemv_t.c:(.text+0xbd4): undefined reference to `cblas_cgemv'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_cgemv_t.o:test_cgemv_t.c:(.text+0xd0f): undefined reference to `cblas_cdotu'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_cgemv_t.o:test_cgemv_t.c:(.text+0xe4a): undefined reference to `cblas_scnrm2'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zgemv_t.o:test_zgemv_t.c:(.text+0xbe): undefined reference to `cblas_zgemv'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zgemv_t.o:test_zgemv_t.c:(.text+0xaa5): undefined reference to `cblas_zomatcopy'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zgemv_t.o:test_zgemv_t.c:(.text+0xb32): undefined reference to `cblas_zdotu'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zgemv_t.o:test_zgemv_t.c:(.text+0xb99): undefined reference to `cblas_zaxpby'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zgemv_t.o:test_zgemv_t.c:(.text+0xc11): undefined reference to `cblas_zgemv'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zgemv_t.o:test_zgemv_t.c:(.text+0xd72): undefined reference to `cblas_zdotu'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zgemv_t.o:test_zgemv_t.c:(.text+0xeb2): undefined reference to `cblas_dznrm2'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_sgemmt.o:test_sgemmt.c:(.text+0x214): undefined reference to `cblas_sgemm'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_sgemmt.o:test_sgemmt.c:(.text+0x313): undefined reference to `cblas_sgemmt'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_sgemmt.o:test_sgemmt.c:(.text+0x1ac8): undefined reference to `cblas_sgemmt'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_dgemmt.o:test_dgemmt.c:(.text+0x214): undefined reference to `cblas_dgemm'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_dgemmt.o:test_dgemmt.c:(.text+0x313): undefined reference to `cblas_dgemmt'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_dgemmt.o:test_dgemmt.c:(.text+0x1c4d): undefined reference to `cblas_dgemmt'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_cgemmt.o:test_cgemmt.c:(.text+0x209): undefined reference to `cblas_cgemm'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_cgemmt.o:test_cgemmt.c:(.text+0x30b): undefined reference to `cblas_cgemmt'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_cgemmt.o:test_cgemmt.c:(.text+0x2fa9): undefined reference to `cblas_cgemmt'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zgemmt.o:test_zgemmt.c:(.text+0x209): undefined reference to `cblas_zgemm'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zgemmt.o:test_zgemmt.c:(.text+0x30f): undefined reference to `cblas_zgemmt'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zgemmt.o:test_zgemmt.c:(.text+0x2fdc): undefined reference to `cblas_zgemmt'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_ztrmv.o:test_ztrmv.c:(.text+0x1e0): undefined reference to `cblas_zimatcopy'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_ctrmv.o:test_ctrmv.c:(.text+0x1d8): undefined reference to `cblas_cimatcopy'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_ztrsv.o:test_ztrsv.c:(.text+0x1e0): undefined reference to `cblas_zimatcopy'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_ctrsv.o:test_ctrsv.c:(.text+0x1d8): undefined reference to `cblas_cimatcopy'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zgemm.o:test_zgemm.c:(.text+0x2da): undefined reference to `cblas_zimatcopy'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_zgemm.o:test_zgemm.c:(.text+0x32c): undefined reference to `cblas_zimatcopy'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_cgemm.o:test_cgemm.c:(.text+0x2da): undefined reference to `cblas_cimatcopy'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: test_extensions/test_cgemm.o:test_cgemm.c:(.text+0x32c): undefined reference to `cblas_cimatcopy'
collect2.exe: error: ld returned 1 exit status
make[1]: *** [Makefile:77: openblas_utest_ext] Error 1
make[1]: Leaving directory '/c/r/OPB/OpenBLAS-develop-5d678f1/utest'
make: *** [Makefile:168: tests] Error 2

Looks like most of the new OPENBLAS_UTEST_EXT depends on CBLAS (for no apparent reason) and/or should not get built with NO_CBLAS=1 :/

quickest fix is to put

ifeq ($(NO_CBLAS), 1)
OBJS_EXT= utest_main.o 
endif

in utest/Makefile before the all: run_test