1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185
|
#!/usr/bin/make -f
include /usr/share/dpkg/pkg-info.mk
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
SO:=3
MN:=0
VERS:=$(SO).$(MN)
# xerblas_ and LAPACK_xerblas must be overrideable by applications
# --dynamic-list does not work with gold, so drop the flag completely
BUILDFLAGS_ENV:=DEB_LDFLAGS_MAINT_STRIP="-Wl,-Bsymbolic-functions"
LDFLAGS:=$(shell $(BUILDFLAGS_ENV) dpkg-buildflags --get LDFLAGS)
F77:=gfortran
FFLAGS:=$(shell dpkg-buildflags --get FFLAGS)
FFLAGS_NOOPT:=$(shell DEB_BUILD_OPTIONS=noopt dpkg-buildflags --get FFLAGS)
CC:=/usr/bin/cc
CFLAGS:=$(shell dpkg-buildflags --get CFLAGS)
CPPFLAGS:=$(shell dpkg-buildflags --get CPPFLAGS)
ARCH:=$(shell dpkg --print-architecture)
ifeq ($(ARCH),alpha)
FFLAGS += -mieee
FFLAGS_NOOPT += -mieee
endif
# Using the -frecursive flag is the solution recommended by upstream for #693269
# However, we don't want to use -frecursive for the testsuite, it leads to
# segfaults on mips{,el} (xeigtstz allocates too much space on the stack)
FFLAGS_TESTSUITE := $(FFLAGS)
FFLAGS += -frecursive
FFLAGS_NOOPT += -frecursive
# Support parallel build
ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
MAKEFLAGS += -j$(NUMJOBS)
endif
#
#
# Configure
#
#
make.inc: install/make.inc.gfortran
cat $< | sed -e "s,\(^NOOPT *=\).*,\1 \$$(PICOPTS) $(FFLAGS_NOOPT),1" \
-e "s,\(^OPTS *=\).*,\1 \$$(PICOPTS) $(FFLAGS),1" \
-e "s/\(^LOADOPTS *=\).*/\1 $(LDFLAGS)/1" \
-e "s,\(^CFLAGS *=\).*,\1 $(CPPFLAGS) \$$(PICOPTS) $(CFLAGS),1" \
-e "s,[^ ]*blas[^ ]*\.a,-lblas,1" > $@
lapack-netlib.pc: lapack.pc.in
cat $< | sed -e "s%@LAPACK_VERSION@%$(DEB_VERSION_UPSTREAM)%" \
-e "s%@prefix@%/usr%" \
-e "s%@libdir@%/usr/lib%" > $@
mkdir -p debian/tmp/usr/lib/pkgconfig
#
#
# Build rules for libraries
#
#
liblapack_pic.a: make.inc testing/Makefile
echo "Building liblapack_pic.a"
$(MAKE) cleanlib
$(MAKE) lapack_install PICOPTS=-fPIC
$(MAKE) lib PICOPTS=-fPIC
mv liblapack.a $@
liblapack.so.$(VERS): liblapack_pic.a
echo "Building liblapack.so.$(VERS) from liblapack_pic.a"
mkdir -p tmp
cd tmp && ar x ../$<
$(F77) -shared -Wl,-soname=liblapack.so.$(SO) -o $@ tmp/*.o -L. -lblas $(LDFLAGS)
rm -rf tmp
liblapack.so.$(SO): liblapack.so.$(VERS)
ln -snf $< $@
liblapack.so: liblapack.so.$(SO)
ln -snf $< $@
liblapack.a: make.inc
echo "Building liblapack.a"
$(MAKE) lapack_install
$(MAKE) lib
lapacke/liblapacke_pic.a: make.inc
echo "Building liblapacke_pic.a"
cd lapacke; \
$(MAKE) cleanlib; \
$(MAKE) PICOPTS=-fPIC; \
mv ../liblapacke.a $(@F)
lapacke/liblapacke.so.$(VERS): lapacke/liblapacke_pic.a
echo "Building liblapacke.so.$(VERS) from liblapacke_pic.a"
cd lapacke; \
mkdir -p tmp; \
cd tmp && ar x ../$(<F) && cd -; \
$(CC) -shared -Wl,-soname=liblapacke.so.$(SO) -o $(@F) tmp/*.o -L.. -lblas -llapack $(LDFLAGS); \
rm -rf tmp
lapacke/liblapacke.so.$(SO): lapacke/liblapacke.so.$(VERS)
cd lapacke; \
ln -snf $(<F) $(@F)
lapacke/liblapacke.so: lapacke/liblapacke.so.$(SO)
cd lapacke; \
ln -snf $(<F) $(@F)
lapacke/liblapacke.a: make.inc
echo "Building liblapacke.a"
cd lapacke; \
$(MAKE) ; \
mv ../liblapacke.a $(@F)
#
#
# Testing rules
#
#
testing/testing_results.txt: liblapack.so
LD_LIBRARY_PATH=$$(pwd):$$LD_LIBRARY_PATH \
$(MAKE) PICOPTS= OPTS="$(FFLAGS_TESTSUITE)" \
LLIB="-L $$(pwd) -llapack -lblas" lapack_testing
#
#
# Package rules
#
#
%:
dh $@ --parallel
override_dh_auto_clean: make.inc
dh_testdir
rm -rf debian/*_stamp debian/*_results lib* testing/*out
rm -rf *.a install/test* debian/test/ debian/time/
rm -f testing/tmp testing/testing_results.txt
cd lapacke && $(MAKE) clean
rm -f lapacke/*.a lapacke/*.so lapacke/*.so.* lapacke/include/lapacke_mangling.h
touch TESTING/xlinfoo TESTING/xeigfoo && $(MAKE) clean
rm -rf DOCS/explore-html/ DOCS/man/
rm -f output_err
rm -f make.inc lapack-netlib.pc
# liblapack_pic.a must come before liblapack.a, otherwise the latter will be overwritten
# We also build the test programs, in order to avoid FTBFS if DEB_BUILD_OPTIONS contains nocheck
override_dh_auto_build-arch: liblapack_pic.a liblapack.a liblapack.so lapacke/liblapacke_pic.a lapacke/liblapacke.a lapacke/liblapacke.so lapack-netlib.pc
make OPTS="$(FFLAGS_TESTSUITE)" -C testing xeigtstc xeigtstd xeigtsts xeigtstz xlintstc xlintstd xlintsts xlintstz xlintstds xlintstrfc xlintstrfd xlintstrfs xlintstrfz xlintstzc
override_dh_auto_build-indep: make.inc
$(MAKE) html
$(MAKE) man
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
override_dh_auto_test-arch: testing/testing_results.txt
else
override_dh_auto_test-arch:
touch testing/testing_results.txt
endif
override_dh_makeshlibs:
dh_makeshlibs -a -pliblapack3 -V "liblapack3 | liblapack.so.3" -n
dh_makeshlibs -a -Nliblapack3
override_dh_shlibdeps:
dh_shlibdeps -a -l $$(pwd)
# Do not compress the .map files in HTML generated documentation
override_dh_compress-indep:
dh_compress -i -X.map
# This Makefile must be run serially (because non-PIC and PIC versions must be
# built sequentially), but the sub-makes can still be parallized
.NOTPARALLEL:
|