Comment 0 for bug 202869

Revision history for this message
Konstantin L. Metlov (metlov) wrote :

Binary package hint: blas

On architectures with internel floating point precision higher than that of the varibles (such as 68000, x86) files src/icamax.f and src/izamax.f must necessarily be compiled with -ffloat-store option. Otherwise the corresponding functions do not perform to their specification and the corresponding blas level 1 tests fail. This, in particular, prevents atlas-3.6.0-21.1ubuntu2 from building on i386.

It is, of course, an overkill to enable -ffloat-store for the whole BLAS, but enabling it only for two said files works well and the impact on performance is negligible.

This can be acomplished by the following changes to debian/rules
BOBJ:=$(BSRC:.f=.o)
+BOBJ1:=$(filter-out src/izamax.o,$(filter-out src/icamax.o,$(BOBJ)))
+BOBJ2:=src/icamax.o src/izamax.o

....

debian/shared_dir debian/static_dir debian/test_dir:
        mkdir -p $(subst _dir,,$(@))
        touch $@

!$(subst src/,debian/static/,$(BOBJ1)): \
        debian/static/%.o : src/%.f debian/static_dir debian/patch_applied

        $(F77) $(F77FLAGS) -c $< -o $@

+$(subst src/,debian/static/,$(BOBJ2)): \
+ debian/static/%.o : src/%.f debian/static_dir +debian/patch_applied
+
+ $(F77) $(F77FLAGS) -ffloat-store -c $< -o $@

The resulting library passes all of the BLAS test suite. This also fixes atlas-3.6.0-21.1ubuntu2 build problem.