From help-octave-request at bevo dot che dot wisc dot edu Sat Feb 5 14:17:25 2000 Subject: Re: ATLAS and octave From: R Clint Whaley To: edd at debian dot org, rwhaley@cs.utk.edu Cc: atlas at cs dot utk dot edu, help-octave@bevo.che.wisc.edu, jwe@bevo.che.wisc.edu, keitt@nceas.ucsb.edu Date: Sat, 5 Feb 2000 15:17:18 -0500 > Clint> The most direct method is, with a previously installed ATLAS, build > Clint> octave's libcruft as normal, but you then ar into it the contents > Clint> of: ATLAS/lib//liblapack.a (overwriting some LAPACK routines) > Clint> ATLAS/lib//libatlas.a (ATLAS internals) > Clint> ATLAS/lib//libf77blas.a (F77 BLAS interface -- overwrite BLAS) > Clint> ATLAS/lib//libcblas.a (C BLAS interface) > >Could you send me your Makefile snippet? I'd *love* to try that on my Octave >build process for the Debian package as we already have Atlas libraries. The kludge I used (invented at 6AM, so elegant it's not) is: Run octave's configure, but don't start build yet. Replace libcruft/blas/Makefile with the file I include below. ar x the above mentioned ATLAS libs (looks like in your case they have been combined into two libs, just x those two libs) into the libcruft/blas directory. Compile octave's specialized xerbla.f to overwrite ATLAS's. Also, edit ATLAS/interfaces/lapack/F77/src/ilaenv.f and comment out all mention of IEEECK, and compile this file over the top of ilaenv.o. Now continue with octave install. I issued make CFLAGS=-O CXXFLAGS=-O LDFLAGS= twice. The second time I hoped to overwrite lapack's API with ATLAS's (this is necessary because I only hacked the libcruft/blas makefile, and used it to put ATLAS's BLAS & LAPACK routines into the library). As you can see, this was a rather brutal kludge; I just wanted to make sure the libraries would play nicely. Obviously, my hope is one of the octave maintainers will find a formal and elegant way to make this a painless process; it is unlikely that I will have the time to become an octave expert in order to make this smooth . . . Cheers, Clint TOPDIR = ../.. srcdir = /home/rwhaley/dload/octave-2.0.16/libcruft/blas top_srcdir = /home/rwhaley/dload/octave-2.0.16 VPATH = /home/rwhaley/dload/octave-2.0.16/libcruft/blas EXTERNAL_DISTFILES = $(DISTFILES) include $(TOPDIR)/Makeconf SOURCES = xerbla.f DISTFILES = $(SOURCES) CRUFT_SRC = xerbla.f CRUFT_BASE = xerbla CRUFT_OBJ = $(wildcard *.o) CWD = $(shell pwd) THISDIR = $(notdir $(CWD)) LIBCRUFT = ../libcruft.a LIBCRUFT_OBJS = $(CRUFT_OBJ) LIBCRUFT_DEPS = all : ar r $(LIBCRUFT) *.o .PHONY : all .PRECIOUS: all pic : all install :: all .PHONY: install uninstall:: .PHONY: uninstall clean:: touch clean .PHONY: clean mostlyclean:: touch mostlyclean .PHONY: mostlyclean distclean:: touch distclean .PHONY: distclean maintainer-clean:: touch maintainer-clean .PHONY: maintainer-clean #include ../Makerules ----------------------------------------------------------------------- Octave is freely available under the terms of the GNU GPL. Octave's home on the web: http://www.che.wisc.edu/octave/octave.html How to fund new projects: http://www.che.wisc.edu/octave/funding.html Subscription information: http://www.che.wisc.edu/octave/archive.html -----------------------------------------------------------------------