1
2# ================================
3# Makefile for generic Unix system
4# ================================
5
6#  Set the macro FC      to the compiler you would like to use
7#  Set the macro FFLAGS  to the compiler options you would like to use
8#  Set the macro RANLIB  to the processor that writes tables-of-contents
9#                        on archive files.
10#  Set the macro MACHCON to the machine type (see the file
11#                        ../../utils/r1mach.template)
12
13#  Some example settings :
14
15# ... Sun
16
17##=sun4_begin
18# FC = f77
19# FFLAGS = -O3
20# RANLIB = ranlib
21# MACHCON = SUN
22##=sun4_end
23
24# ... Sun  (with -r8 option)
25
26##=sun4.r8_begin
27# FC = f77
28# FFLAGS = -O3 -r8
29# RANLIB = echo
30# MACHCON = SUN.F77-WITH-R8-OPTION
31##=sun4.r8_end
32
33# ... Sun for SPARCworks compiler (Solaris 2)
34
35##=sun.sparc_begin
36# FC = f77
37# FFLAGS = -O3
38# RANLIB = echo
39# MACHCON = SUN
40##=sun.sparc_end
41
42# ... Sun (with -r8 option) for SPARCworks compiler (Solaris 2)
43
44##=sun4.sparc.r8_begin
45# FC = f77
46# FFLAGS = -O3 -r8
47# RANLIB = ranlib
48# MACHCON = SUN.F77-WITH-R8-OPTION
49##=sun.sparc.r8_end
50
51
52# ... Sun for Solaris 2.5
53
54##=sun.sun.solaris2-v4_begin
55# FC = f77
56# FFLAGS = -O3 -PIC
57# RANLIB = echo
58# MACHCON = SUN
59##=sun.sun.solaris2-v4_end
60
61# ... Sun (with -r8 option) Solaris 2.5
62
63##=sun.sun.solaris2-v4.r8_begin
64# FC = f77
65# FFLAGS = -O3 -r8 -PIC
66# RANLIB = ranlib
67# MACHCON = SUN.F77-WITH-R8-OPTION
68##=sun.sun.solaris2-v4.r8_end
69
70# ... Silicon Graphics  (Iris, Indigo)
71
72##=sgi_begin
73# FC = f77
74# FFLAGS = -O2 static
75# RANLIB = ar tls
76# MACHCON = IEEE.MOST-SIG-BYTE-FIRST
77##=sgi_end
78
79# ... Cray  (UNICOS)
80
81# FC = cf77
82# FFLAGS =
83# RANLIB = echo
84# MACHCON = CRAY
85
86# ... Convex  (Native mode)
87
88# FC = fc
89# FFLAGS = -fn -O2 -or none
90# RANLIB = ranlib
91# MACHCON = CONVEX
92
93# ... HP9000  (Series 300 or 700)
94
95##=hp9000s300_begin
96##=hp9000s700_begin
97# FC = f77
98# FFLAGS = -K -O
99# RANLIB = ranlib
100# MACHCON = IEEE.MOST-SIG-BYTE-FIRST
101##=hp9000s700_end
102##=hp9000s300_end
103
104# ... IBM RS/6000
105
106##=rs6000_begin
107# FC = xlf
108# FFLAGS = -O
109# RANLIB = ranlib
110# MACHCON = IEEE.MOST-SIG-BYTE-FIRST
111##=rs6000_end
112
113# ... IBM RS/6000 with automatic precision doubling
114
115##=rs6000.autodbl_begin
116# FC = xlf
117# FFLAGS = -O -qautodbl=dblpad
118# RANLIB = ranlib
119# MACHCON = IBM.RS6000.XLF-WITH-AUTODBL-OPTION
120##=rs6000.autodbl_end
121
122# --------------------------------------------------------------------------
123
124SRCDIR = ../../src
125SCRIPTDIR = ../../utils
126
127# --------------------------------------------------------------------------
128
129libcm.a : checkall
130	@echo " " ; echo "Updating library file ..." ; echo " "
131	csh $(SCRIPTDIR)/Update.local $@ '$(RANLIB)'
132
133checkall : sublibs
134	date > sublibs
135
136veryclean :
137	rm -f -r sublibs libcm.a src
138
139# --------------------------------------------------------------------------
140
141# ... special replacement sources for this machine
142
143sublibs :: src/machcon/i1mach.f src/machcon/d1mach.f src/machcon/r1mach.f
144	$(FC) -c $(FFLAGS) $?
145
146src/machcon/i1mach.f : src/machcon
147	csh $(SCRIPTDIR)/genmachcon $(MACHCON)
148	mv i1mach.f r1mach.f d1mach.f src/machcon
149
150src/machcon/r1mach.f src/machcon/d1mach.f :
151
152src/machcon : src
153	mkdir $@
154
155src :
156	mkdir $@
157
158
159# --------------------------------------------------------------------------
160
161# ... library proper (one entry for each sublibrary)
162
163#  Some cmlib sublibraries may fail to compile at the highest compiler
164#  optimization level.  For those that fail, change $(FFLAGS) below to
165#  a lower optimization level.
166
167#  Some known problems :
168
169#    on Sun Fortran 1.3.1  :  compile cdriv with -O1
170#    on SGI Iris           :  compile fnlib with -O1 static
171
172sublibs :: $(SRCDIR)/adapt/*.f ; $(FC) -c $(FFLAGS) $?
173sublibs :: $(SRCDIR)/amoslib/*.f ; $(FC) -c $(FFLAGS) $?
174sublibs :: $(SRCDIR)/blas/*.f ; $(FC) -c $(FFLAGS) $?
175sublibs :: $(SRCDIR)/bocls/*.f ; $(FC) -c $(FFLAGS) $?
176sublibs :: $(SRCDIR)/bspline/*.f ; $(FC) -c $(FFLAGS) $?
177sublibs :: $(SRCDIR)/bvsup/*.f ; $(FC) -c $(FFLAGS) $?
178sublibs :: $(SRCDIR)/cdriv/*.f ; $(FC) -c $(FFLAGS) $?
179sublibs :: $(SRCDIR)/cluster/*.f ; $(FC) -c $(FFLAGS) $?
180sublibs :: $(SRCDIR)/cpqr79/*.f ; $(FC) -c $(FFLAGS) $?
181sublibs :: $(SRCDIR)/cpzero/*.f ; $(FC) -c $(FFLAGS) $?
182sublibs :: $(SRCDIR)/dbsplin/*.f ; $(FC) -c $(FFLAGS) $?
183sublibs :: $(SRCDIR)/ddassl/*.f ; $(FC) -c $(FFLAGS) $?
184sublibs :: $(SRCDIR)/ddriv/*.f ; $(FC) -c $(FFLAGS) $?
185sublibs :: $(SRCDIR)/depac/*.f ; $(FC) -c $(FFLAGS) $?
186sublibs :: $(SRCDIR)/dnl2sn/*.f ; $(FC) -c $(FFLAGS) $?
187sublibs :: $(SRCDIR)/dqrlss/*.f ; $(FC) -c $(FFLAGS) $?
188sublibs :: $(SRCDIR)/dtensbs/*.f ; $(FC) -c $(FFLAGS) $?
189sublibs :: $(SRCDIR)/eispack/*.f ; $(FC) -c $(FFLAGS) $?
190sublibs :: $(SRCDIR)/fc/*.f ; $(FC) -c $(FFLAGS) $?
191sublibs :: $(SRCDIR)/fcnpak/*.f ; $(FC) -c $(FFLAGS) $?
192sublibs :: $(SRCDIR)/fftpkg/*.f ; $(FC) -c $(FFLAGS) $?
193sublibs :: $(SRCDIR)/fishpak/*.f ; $(FC) -c $(FFLAGS) $?
194sublibs :: $(SRCDIR)/fnlib/*.f ; $(FC) -c -O1 -static $?
195sublibs :: $(SRCDIR)/licepak/*.f ; $(FC) -c $(FFLAGS) $?
196sublibs :: $(SRCDIR)/lindrv/*.f ; $(FC) -c $(FFLAGS) $?
197sublibs :: $(SRCDIR)/linpakc/*.f ; $(FC) -c $(FFLAGS) $?
198sublibs :: $(SRCDIR)/linpakd/*.f ; $(FC) -c $(FFLAGS) $?
199sublibs :: $(SRCDIR)/linpaks/*.f ; $(FC) -c $(FFLAGS) $?
200sublibs :: $(SRCDIR)/lotps/*.f ; $(FC) -c $(FFLAGS) $?
201sublibs :: $(SRCDIR)/mxentrp/*.f ; $(FC) -c $(FFLAGS) $?
202sublibs :: $(SRCDIR)/nl2sn/*.f ; $(FC) -c $(FFLAGS) $?
203sublibs :: $(SRCDIR)/odrpack/*.f ; $(FC) -c $(FFLAGS) $?
204sublibs :: $(SRCDIR)/pchipd/*.f ; $(FC) -c $(FFLAGS) $?
205sublibs :: $(SRCDIR)/pchips/*.f ; $(FC) -c $(FFLAGS) $?
206sublibs :: $(SRCDIR)/q1da/*.f ; $(FC) -c $(FFLAGS) $?
207sublibs :: $(SRCDIR)/quadpkd/*.f ; $(FC) -c $(FFLAGS) $?
208sublibs :: $(SRCDIR)/quadpks/*.f ; $(FC) -c $(FFLAGS) $?
209sublibs :: $(SRCDIR)/rv/*.f ; $(FC) -c $(FFLAGS) $?
210sublibs :: $(SRCDIR)/sdassl/*.f ; $(FC) -c $(FFLAGS) $?
211sublibs :: $(SRCDIR)/sdriv/*.f ; $(FC) -c $(FFLAGS) $?
212sublibs :: $(SRCDIR)/sglss/*.f ; $(FC) -c $(FFLAGS) $?
213sublibs :: $(SRCDIR)/slrpack/*.f ; $(FC) -c $(FFLAGS) $?
214sublibs :: $(SRCDIR)/slvblk/*.f ; $(FC) -c $(FFLAGS) $?
215sublibs :: $(SRCDIR)/snls1e/*.f ; $(FC) -c $(FFLAGS) $?
216sublibs :: $(SRCDIR)/splp/*.f ; $(FC) -c $(FFLAGS) $?
217sublibs :: $(SRCDIR)/sqrlss/*.f ; $(FC) -c $(FFLAGS) $?
218sublibs :: $(SRCDIR)/ssort/*.f ; $(FC) -c $(FFLAGS) $?
219sublibs :: $(SRCDIR)/sudsods/*.f ; $(FC) -c $(FFLAGS) $?
220sublibs :: $(SRCDIR)/tensbs/*.f ; $(FC) -c $(FFLAGS) $?
221sublibs :: $(SRCDIR)/twodq/*.f ; $(FC) -c $(FFLAGS) $?
222sublibs :: $(SRCDIR)/uncmin/*.f ; $(FC) -c $(FFLAGS) $?
223sublibs :: $(SRCDIR)/vfft/*.f ; $(FC) -c $(FFLAGS) $?
224sublibs :: $(SRCDIR)/vhs3/*.f ; $(FC) -c $(FFLAGS) $?
225sublibs :: $(SRCDIR)/vsfft/*.f ; $(FC) -c $(FFLAGS) $?
226sublibs :: $(SRCDIR)/xblas/*.f ; $(FC) -c $(FFLAGS) $?
227sublibs :: $(SRCDIR)/xerror/*.f ; $(FC) -c $(FFLAGS) $?
228sublibs :: $(SRCDIR)/zeroin/*.f ; $(FC) -c $(FFLAGS) $?
229
230# --------------------------------------------------------------------------
231
232#  ... the following targets run the cmlib quickchecks
233
234testall :
235	@echo " "
236	@echo "Testing all of cmlib (this make take a while) ..."
237	@echo " "
238	csh $(SCRIPTDIR)/Testall "" "$(FC)" "$(FFLAGS)" ""
239
240test :
241	@csh $(SCRIPTDIR)/Test "" "$(FC)" "$(FFLAGS)" ""
242
243# --------------------------------------------------------------------------
244
245make clean :
246	rm -r -f core *.o *.trace bintmp
247
248veryclean :
249	make clean
250	rm -r -f libcm.a src/machcon
251