changeset 4734:80461a9e516c

override default xerbla with version from Octave * mingw-blas-1-xerbla.patch, blas.mk: Build default libxerbla lib. * mingw-lapack-1-xerbla.patch, lapack.mk: Use external libxerbla. * mingw-openblas-1-xerbla.patch, openblas.mk: Likewise. * src/qrupdate-1-fixes.patch: Likewise. * default-octave.mk: Also install libxerbla.dll as libxerbla-octave.dll.
author John W. Eaton <jwe@octave.org>
date Thu, 21 Jun 2018 01:32:10 -0400
parents 1ecb1e67eaa1
children a7964a7e98b5
files src/blas.mk src/default-octave.mk src/lapack.mk src/mingw-blas-1-xerbla.patch src/mingw-lapack-1-xerbla.patch src/mingw-openblas-1-xerbla.patch src/openblas.mk src/qrupdate-1-fixes.patch
diffstat 8 files changed, 156 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/blas.mk	Sat Jun 09 10:13:46 2018 -0400
+++ b/src/blas.mk	Thu Jun 21 01:32:10 2018 -0400
@@ -21,17 +21,29 @@
     tail -1
 endef
 
+$(PKG)_TARGETS =  BLASLIB=libblas.a
+ifeq ($(MXE_WINDOWS_BUILD),yes)
+  $(PKG)_TARGETS += XERBLALIB=libxerbla.a
+  $(PKG)_LIBXERBLA = -lxerbla
+endif
+
 define $(PKG)_BUILD
     $(SED) -i 's,$$(FORTRAN),$(MXE_F77) $(MXE_F77_PICFLAG) $($(PKG)_DEFAULT_INTEGER_8_FLAG),g' '$(1)/Makefile'
-    $(MAKE) -C '$(1)' -j '$(JOBS)'
-    cd '$(1)' && $(MXE_AR) cr libblas.a *.o
+    $(MAKE) -C '$(1)' ARCH=$(MXE_AR) RANLIB=$(MXE_RANLIB) $($(PKG)_TARGETS) -j '$(JOBS)'
 
     if [ $(BUILD_SHARED) = yes ]; then \
-      $(MAKE_SHARED_FROM_STATIC) --ar '$(MXE_AR)' --ld '$(MXE_F77)' '$(1)/libblas.a' --install '$(INSTALL)' --libdir '$(3)$(HOST_LIBDIR)' --bindir '$(3)$(HOST_BINDIR)'; \
+      if [ -n "$($(PKG)_LIBXERBLA)" ]; then \
+        $(MAKE_SHARED_FROM_STATIC) --ar '$(MXE_AR)' --ld '$(MXE_F77)' '$(1)/libxerbla.a' --install '$(INSTALL)' --libdir '$(3)$(HOST_LIBDIR)' --bindir '$(3)$(HOST_BINDIR)'; \
+        $(INSTALL) '$(3)/$(HOST_BINDIR)/libxerbla.dll' '$(3)$(HOST_BINDIR)/libxerbla-blas.dll'; \
+      fi; \
+      $(MAKE_SHARED_FROM_STATIC) --ar '$(MXE_AR)' --ld '$(MXE_F77)' '$(1)/libblas.a' --install '$(INSTALL)' --libdir '$(3)$(HOST_LIBDIR)' --bindir '$(3)$(HOST_BINDIR)' $($(PKG)_LIBXERBLA); \
     fi
 
     if [ $(BUILD_STATIC) = yes ]; then \
       $(INSTALL) -d '$(3)$(HOST_LIBDIR)'; \
       $(INSTALL) '$(1)/libblas.a' '$(3)$(HOST_LIBDIR)/'; \
+      if [ -n "$($(PKG)_LIBXERBLA)" ]; then \
+        $(INSTALL) '$(1)/libxerbla.a' '$(3)$(HOST_LIBDIR)/'; \
+      fi; \
     fi
 endef
--- a/src/default-octave.mk	Sat Jun 09 10:13:46 2018 -0400
+++ b/src/default-octave.mk	Thu Jun 21 01:32:10 2018 -0400
@@ -185,6 +185,7 @@
     $(MAKE) -C '$(1)/.build' -j '$(JOBS)' install DESTDIR='$(3)'
 
     if [ "x$(MXE_SYSTEM)" == "xmingw" ]; then \
+      $(INSTALL) '$(3)/$(HOST_BINDIR)/libxerbla.dll' '$(3)$(HOST_BINDIR)/libxerbla-octave.dll'; \
       cp '$(1)/.build/src/.libs/octave-gui.exe' '$(3)$(HOST_BINDIR)'; \
       if [ "x$(ENABLE_BINARY_PACKAGES)" == "xyes" ]; then \
         mkdir -p '$(3)$(BUILD_TOOLS_PREFIX)/bin'; \
--- a/src/lapack.mk	Sat Jun 09 10:13:46 2018 -0400
+++ b/src/lapack.mk	Thu Jun 21 01:32:10 2018 -0400
@@ -11,9 +11,15 @@
 $(PKG)_DEPS     := blas
 
 ifeq ($(MXE_NATIVE_MINGW_BUILD),yes)
-  $(PKG)_BLAS_CONFIG_OPTS := -DBLAS_LIBRARIES=$(HOST_BINDIR)/libblas.dll
+  $(PKG)_BLAS_CONFIG_OPTS := -DBLAS_LIBRARIES="$(HOST_BINDIR)/libblas.dll $(HOST_BINDIR)/libxerbla.dll"
 else
-  $(PKG)_BLAS_CONFIG_OPTS := -DBLAS_LIBRARIES="-L$(HOST_PREFIX)/lib -lblas"
+ifeq ($(MXE_WINDOWS_BUILD),yes)
+  $(PKG)_BLAS_CONFIG_OPTS := -DBLAS_LIBRARIES="-L$(HOST_PREFIX)/lib -lblas -lxerbla" -DBLAS_LINKER_FLAGS="-L$(HOST_PREFIX)/lib -lblas -lxerbla"
+  $(PKG)_BLAS_LIBS := -lblas -lxerbla
+else
+  $(PKG)_BLAS_CONFIG_OPTS := -DBLAS_LIBRARIES="-L$(HOST_PREFIX)/lib -lblas" -DBLAS_LINKER_FLAGS="-L$(HOST_PREFIX)/lib -lblas"
+  $(PKG)_BLAS_LIBS := -lblas
+endif
 endif
 
 ifeq ($(ENABLE_FORTRAN_INT64),yes)
@@ -38,7 +44,7 @@
     $(MAKE) -C '$(1)' -j '$(JOBS)' VERBOSE=1 lapacklib
 
     if [ $(BUILD_SHARED) = yes ]; then \
-        $(MAKE_SHARED_FROM_STATIC) --ar '$(MXE_AR)' --ld '$(MXE_F77)' '$(1)/liblapack.a' --install '$(INSTALL)' --libdir '$(HOST_LIBDIR)' --bindir '$(HOST_BINDIR)' -lblas; \
+        $(MAKE_SHARED_FROM_STATIC) --ar '$(MXE_AR)' --ld '$(MXE_F77)' '$(1)/liblapack.a' --install '$(INSTALL)' --libdir '$(HOST_LIBDIR)' --bindir '$(HOST_BINDIR)' $($(PKG)_BLAS_LIBS); \
     fi
 
     $(INSTALL) -d '$(HOST_LIBDIR)/pkgconfig' 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/mingw-blas-1-xerbla.patch	Thu Jun 21 01:32:10 2018 -0400
@@ -0,0 +1,52 @@
+diff -uNr a/Makefile b/Makefile
+--- a/Makefile	2017-11-15 00:39:21.000000000 -0500
++++ b/Makefile	2018-06-20 09:55:02.049803368 -0400
+@@ -55,8 +55,8 @@
+ #
+ #######################################################################
+ 
+-all: $(BLASLIB)
+- 
++all: $(BLASLIB) $(XERBLALIB)
++
+ #---------------------------------------------------------
+ #  Comment out the next 6 definitions if you already have
+ #  the Level 1 BLAS.
+@@ -88,9 +88,11 @@
+ #  Level 2 and Level 3 BLAS.  Comment it out only if you already have
+ #  both the Level 2 and 3 BLAS.
+ #---------------------------------------------------------------------
+-ALLBLAS  = lsame.o xerbla.o xerbla_array.o
++ALLBLAS  = lsame.o xerbla_array.o
+ $(ALLBLAS) : $(FRC)
+ 
++XERBLA = xerbla.o
++
+ #---------------------------------------------------------
+ #  Comment out the next 4 definitions if you already have
+ #  the Level 2 BLAS.
+@@ -137,10 +139,16 @@
+ 	$(CBLAS1) $(CBLAS2) $(CBLAS3) $(ZBLAS1) 	\
+ 	$(ZBLAS2) $(ZBLAS3) $(ALLBLAS)
+ 
++XERBLAOBJ=$(XERBLA)
++
+ $(BLASLIB): $(ALLOBJ)
+ 	$(ARCH) $(ARCHFLAGS) $@ $(ALLOBJ)
+ 	$(RANLIB) $@
+ 
++$(XERBLALIB): $(XERBLAOBJ)
++	$(ARCH) $(ARCHFLAGS) $@ $(XERBLAOBJ)
++	$(RANLIB) $@
++
+ single: $(SBLAS1) $(ALLBLAS) $(SBLAS2) $(SBLAS3)
+ 	$(ARCH) $(ARCHFLAGS) $(BLASLIB) $(SBLAS1) $(ALLBLAS) \
+ 	$(SBLAS2) $(SBLAS3)
+diff -uNr a/make.inc b/make.inc
+--- a/make.inc	2011-04-19 15:08:00.000000000 -0400
++++ b/make.inc	2018-06-20 09:55:18.185059266 -0400
+@@ -32,3 +32,4 @@
+ #  The location and name of the Reference BLAS library.
+ #
+ BLASLIB      = blas$(PLAT).a
++XERBLALIB    = xerbla$(PLAT).a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/mingw-lapack-1-xerbla.patch	Thu Jun 21 01:32:10 2018 -0400
@@ -0,0 +1,24 @@
+diff -uNr a/SRC/CMakeLists.txt b/SRC/CMakeLists.txt
+--- a/SRC/CMakeLists.txt	2017-06-17 18:46:53.000000000 -0400
++++ b/SRC/CMakeLists.txt	2018-06-20 12:10:39.078671922 -0400
+@@ -37,7 +37,7 @@
+ 
+ set(ALLAUX ilaenv.f ieeeck.f lsamen.f iparmq.f iparam2stage.F
+    ilaprec.f ilatrans.f ilauplo.f iladiag.f chla_transtype.f
+-   ../INSTALL/ilaver.f ../INSTALL/lsame.f xerbla.f xerbla_array.f
++   ../INSTALL/ilaver.f ../INSTALL/lsame.f xerbla_array.f
+    ../INSTALL/slamch.f)
+ 
+ set(SCLAUX
+diff -uNr a/SRC/Makefile b/SRC/Makefile
+--- a/SRC/Makefile	2017-06-17 18:46:53.000000000 -0400
++++ b/SRC/Makefile	2018-06-20 11:48:05.702370314 -0400
+@@ -56,7 +56,7 @@
+ #
+ #######################################################################
+ 
+-ALLAUX = ilaenv.o ieeeck.o lsamen.o xerbla.o xerbla_array.o iparmq.o iparam2stage.o \
++ALLAUX = ilaenv.o ieeeck.o lsamen.o xerbla_array.o iparmq.o iparam2stage.o \
+    ilaprec.o ilatrans.o ilauplo.o iladiag.o chla_transtype.o \
+    ../INSTALL/ilaver.o ../INSTALL/lsame.o ../INSTALL/slamch.o
+ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/mingw-openblas-1-xerbla.patch	Thu Jun 21 01:32:10 2018 -0400
@@ -0,0 +1,50 @@
+diff -uNr a/driver/others/Makefile b/driver/others/Makefile
+--- a/driver/others/Makefile	2018-05-23 09:12:20.000000000 -0400
++++ b/driver/others/Makefile	2018-06-20 10:11:42.783308770 -0400
+@@ -1,7 +1,7 @@
+ 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) 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	+= slamch.$(SUFFIX) slamc3.$(SUFFIX) dlamch.$(SUFFIX)  dlamc3.$(SUFFIX)
+ 
+@@ -71,14 +71,11 @@
+ endif
+ 
+ ifeq ($(DYNAMIC_ARCH), 1)
+-HPLOBJS = memory.$(SUFFIX) xerbla.$(SUFFIX) dynamic.$(SUFFIX)
++HPLOBJS = memory.$(SUFFIX) dynamic.$(SUFFIX)
+ else
+-HPLOBJS = memory.$(SUFFIX) xerbla.$(SUFFIX) parameter.$(SUFFIX)
++HPLOBJS = memory.$(SUFFIX) parameter.$(SUFFIX)
+ endif
+ 
+-xerbla.$(SUFFIX) : xerbla.c
+-	$(CC) $(CFLAGS) -c $< -o $(@F)
+-
+ dynamic.$(SUFFIX) : dynamic.c
+ 	$(CC) $(CFLAGS) -c $< -o $(@F)
+ 
+@@ -166,9 +163,6 @@
+ mulx.$(SUFFIX) : $(ARCH)/mulx.c
+ 	$(CC) $(CFLAGS) -c -DXDOUBLE -UCOMPLEX $< -o $(@F)
+ 
+-xerbla.$(PSUFFIX) : xerbla.c
+-	$(CC) $(PFLAGS) -c $< -o $(@F)
+-
+ parameter.$(PSUFFIX) : parameter.c ../../param.h
+ 	$(CC) $(PFLAGS) -c $< -o $(@F)
+ 
+diff -uNr a/exports/gensymbol b/exports/gensymbol
+--- a/exports/gensymbol	2018-05-23 09:12:20.000000000 -0400
++++ b/exports/gensymbol	2018-06-20 10:10:00.468225478 -0400
+@@ -38,7 +38,6 @@
+     zhbmv,zhemm,zhemv,zher2,zher2k,zher,zherk,zhpmv,zhpr2,
+     zhpr,zrotg,zscal,zswap,zsymm,zsyr2k,zsyrk,ztbmv,
+     ztbsv,ztpmv,ztpsv,ztrmm,ztrmv,ztrsm,ztrsv,
+-    xerbla,
+     saxpby,daxpby,caxpby,zaxpby,
+     sgeadd,dgeadd,cgeadd,zgeadd,
+     somatcopy,
--- a/src/openblas.mk	Sat Jun 09 10:13:46 2018 -0400
+++ b/src/openblas.mk	Thu Jun 21 01:32:10 2018 -0400
@@ -19,6 +19,10 @@
   $(PKG)_MAKE_OPTS += NO_CBLAS=1 USE_THREAD=1 CC=$(MXE_CC) FC=$(MXE_F77) HOSTCC=gcc HOSTFC=gfortran CROSS=1 CROSS_SUFFIX=$(MXE_TOOL_PREFIX)
 endif
 
+ifeq ($(MXE_WINDOWS_BUILD),yes)
+  $(PKG)_MAKE_OPTS += EXTRALIB=-lxerbla
+endif
+
 ifeq ($(ENABLE_FORTRAN_INT64),yes)
   $(PKG)_MAKE_OPTS += BINARY=64 INTERFACE64=1
 endif
--- a/src/qrupdate-1-fixes.patch	Sat Jun 09 10:13:46 2018 -0400
+++ b/src/qrupdate-1-fixes.patch	Thu Jun 21 01:32:10 2018 -0400
@@ -44477,7 +44477,7 @@
 +
 +libqrupdate_la_LIBADD = \
 + $(LAPACK_LIBS) \
-+ $(BLAS_LIBS)
++ $(BLAS_LIBS) -lxerbla
 +
 +libqrupdate_la_SOURCES = \
 +caxcpy.f cch1dn.f cch1up.f cchdex.f cchinx.f cchshx.f cgqvec.f   \