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