aboutsummaryrefslogtreecommitdiff
blob: db284757bbaacfb0fff2ac882f9f5c9deb4e3e5a (plain)
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
Description: Use external SLICOT instead of embedded copy
Author: Sébastien Villemot <sebastien.villemot@ens.fr>
Forwarded: not-needed
Reviewed-By: Rafael Laboissière <rafael@debian.org>
Last-Update: 2021-06-29
--- a/src/Makefile
+++ b/src/Makefile
@@ -22,47 +22,33 @@
 
 # TODO: Private oct-files for control package.
 
-# unpack and compile SLICOT library
-# Note that TG04BX is a custom routine.
-# It has the extension .fortran such that
-# it is not deleted by rm *.f when using
-# the developer makefile makefile_control.m
-# The other rotuines *.fortan are modified versions
-# of the original slicot routines.
-#
-# MA02ID.f use in its original version is compiled by an
-# extra command suppressing warnings on indexing errors
-#
-slicotlibrary.a: slicot.tar.gz
-	tar -xzf slicot.tar.gz
-	mkdir sltmp
-	mv slicot/src/*.f ./sltmp
-	mv slicot/src_aux/*.f ./sltmp
-	if [ "$(HAVE_DGGES)" = "1" ]; then \
-		echo "copy routines using DGGES"; \
-		cp SB04OD.fortran ./sltmp/SB04OD.f; \
-		cp SG03AD.fortran ./sltmp/SG03AD.f; \
-		cp SG03BD.fortran ./sltmp/SG03BD.f; \
-	fi;
-	cp AB08NX.fortran ./sltmp/AB08NX.f
-	cp AG08BY.fortran ./sltmp/AG08BY.f
-	cp SB01BY.fortran ./sltmp/SB01BY.f
-	cp SB01FY.fortran ./sltmp/SB01FY.f
-	cp SB06ND.fortran ./sltmp/SB06ND.f
-	cp TB01MD.fortran ./sltmp/TB01MD.f
-	cp TB01ND.fortran ./sltmp/TB01ND.f
-	cp TB01ZD.fortran ./sltmp/TB01ZD.f
-	cp TG04BX.fortran ./sltmp/TG04BX.f
-	cp ODLTZM.fortran ./sltmp/ODLTZM.f
-	cp makefile.slicot ./sltmp/makefile
-	cd sltmp; $(MKOCTFILE) -w -c MA02ID.f; rm MA02ID.f; $(MKOCTFILE) -c *.f;
-	$(AR) -rc slicotlibrary.a ./sltmp/*.o
-	rm -rf sltmp slicot
+sltmp/%.f: %.fortran
+	mkdir -p sltmp
+	cp $< $@
+
+FORTRAN_SOURCES = 	\
+	sltmp/AB08NX.f	\
+	sltmp/AG08BY.f	\
+	sltmp/SB01BY.f	\
+	sltmp/SB01FY.f	\
+	sltmp/SB06ND.f	\
+	sltmp/TB01MD.f	\
+	sltmp/TB01ND.f	\
+	sltmp/TB01ZD.f	\
+	sltmp/TG04BX.f	\
+	sltmp/ODLTZM.f
+
+ifeq ($(HAVE_DGGES), 1)
+FORTRAN_SOURCES += 	\
+	sltmp/SB04OD.f	\
+	sltmp/SG03AD.f	\
+	sltmp/SG03BD.f
+endif
 
 # slicot functions
-__control_slicot_functions__.oct: __control_slicot_functions__.cc common.cc slicotlibrary.a
-	LDFLAGS="$(LDFLAGS)" \
-    $(MKOCTFILE) $(PKG_CXXFLAGS) __control_slicot_functions__.cc common.cc slicotlibrary.a
+__control_slicot_functions__.oct: __control_slicot_functions__.cc common.cc $(FORTRAN_SOURCES)
+	LDFLAGS="$(LDFLAGS)" \
+    $(MKOCTFILE) $(PKG_CXXFLAGS) __control_slicot_functions__.cc common.cc $(FORTRAN_SOURCES) -lslicot
 
 # helper functions
 __control_helper_functions__.oct: __control_helper_functions__.cc