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