1# This file is part of the Astrometry.net suite.
2# Copyright 2007, 2012 Dustin Lang.
3#
4# The Astrometry.net suite is free software; you can redistribute
5# it and/or modify it under the terms of the GNU General Public License
6# as published by the Free Software Foundation, version 2.
7#
8# The Astrometry.net suite is distributed in the hope that it will be
9# useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11# General Public License for more details.
12#
13# You should have received a copy of the GNU General Public License
14# along with the Astrometry.net suite ; if not, write to the Free Software
15# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
16
17BASEDIR := ..
18COMMON := $(BASEDIR)/util
19
20GSL_LIB := libgsl-an.a
21all: $(GSL_LIB)
22.PHONY: all
23
24# Add a level of indirection so that when building GSL_LIB, the "make" variable
25# MAKECMDGOALS = $(GSL_LIB); we use that to import the dependency files.
26lib: $(GSL_LIB)
27.PHONY: lib
28
29include $(COMMON)/makefile.common
30
31CFLAGS := $(CFLAGS_DEF)
32CFLAGS += -I.
33#CFLAGS += -DHAVE_INLINE
34
35BLAS := \
36dtrmm.o \
37sdsdot.o \
38sdot.o \
39ddot.o \
40cdotu_sub.o \
41cdotc_sub.o \
42xerbla.o \
43ztrsm.o \
44ctrsm.o \
45dtrsm.o \
46strsm.o \
47ztrmm.o \
48ctrmm.o \
49strmm.o \
50zher2k.o \
51cher2k.o \
52zsyr2k.o \
53csyr2k.o \
54dsyr2k.o \
55ssyr2k.o \
56zherk.o \
57cherk.o \
58zsyrk.o \
59csyrk.o \
60dsyrk.o \
61ssyrk.o \
62dsyr.o \
63ssyr.o \
64dsyr2.o \
65ssyr2.o \
66zhemm.o \
67chemm.o \
68zsymm.o \
69csymm.o \
70dsymm.o \
71ssymm.o \
72zgemm.o \
73cgemm.o \
74dgemm.o \
75sgemm.o \
76zher2.o \
77cher2.o \
78zher.o \
79cher.o \
80zgerc.o \
81cgerc.o \
82zgeru.o \
83cgeru.o \
84sger.o \
85dger.o \
86ztrsv.o \
87ctrsv.o \
88dtrsv.o \
89strsv.o \
90ztrmv.o \
91ctrmv.o \
92dtrmv.o \
93strmv.o \
94ssymv.o \
95dsymv.o \
96zhemv.o \
97chemv.o \
98zgemv.o \
99cgemv.o \
100dgemv.o \
101sgemv.o \
102zdscal.o \
103csscal.o \
104zscal.o \
105cscal.o \
106dscal.o \
107sscal.o \
108drotm.o \
109srotm.o \
110drotmg.o \
111srotmg.o \
112drot.o \
113srot.o \
114drotg.o \
115srotg.o \
116zaxpy.o \
117caxpy.o \
118daxpy.o \
119saxpy.o \
120zcopy.o \
121ccopy.o \
122dcopy.o \
123scopy.o \
124zswap.o \
125cswap.o \
126dswap.o \
127sswap.o \
128izamax.o \
129icamax.o \
130idamax.o \
131isamax.o \
132dzasum.o \
133scasum.o \
134dasum.o \
135sasum.o \
136dznrm2.o \
137scnrm2.o \
138dnrm2.o \
139snrm2.o \
140zdotc_sub.o \
141zdotu_sub.o \
142dsdot.o
143
144CBLAS := $(addprefix cblas/,$(BLAS))
145
146MULTIROOTS := \
147fdjac.o \
148fsolver.o \
149fdfsolver.o \
150convergence.o \
151newton.o \
152gnewton.o \
153dnewton.o \
154broyden.o \
155hybrid.o \
156hybridj.o
157
158MULTIROOTS := $(addprefix multiroots/,$(MULTIROOTS))
159
160VECTOR := \
161prop.o
162
163VECTOR := $(addprefix vector/,$(VECTOR))
164
165QR_OBJS := linalg/qr.o linalg/householder.o \
166		matrix/matrix.o matrix/rowcol.o matrix/init.o matrix/submatrix.o \
167		matrix/copy.o \
168		vector/vector.o vector/subvector.o vector/copy.o vector/init.o \
169		block/block.o block/init.o \
170		err/error.o err/stream.o sys/infnan.o sys/fdiv.o \
171		blas/blas.o $(CBLAS)
172
173qr-demo: qr-demo.o $(GSL_LIB)
174	gcc -o $@ $^ -lm
175
176CHOL_OBJS := linalg/cholesky.o matrix/matrix.o matrix/rowcol.o \
177		vector/vector.o vector/subvector.o vector/copy.o \
178		err/error.o err/stream.o sys/infnan.o sys/fdiv.o \
179		blas/blas.o $(CBLAS)
180
181chol-demo: chol-demo.o $(GSL_LIB)
182	gcc -o $@ $^ -lm
183
184SVD_OBJS := linalg/svd.o linalg/bidiag.o sys/coerce.o vector/swap.o matrix/swap.o \
185		vector/oper.o sys/ldfrexp.o
186
187svd-demo: svd-demo.o $(GSL_LIB)
188	gcc -o $@ $^ -lm
189
190LU_OBJS := linalg/lu.o permutation/init.o permutation/permutation.o permutation/permute.o
191
192EXTRA_OBJS := matrix/view.o err/strerror.o
193
194# "sort" removes duplicates.
195GSL_OBJS := $(sort $(QR_OBJS) $(CHOL_OBJS) $(SVD_OBJS) $(LU_OBJS) $(EXTRA_OBJS) $(MULTIROOTS) $(VECTOR))
196
197$(GSL_OBJS): config.h
198
199$(GSL_LIB): config.h $(GSL_OBJS)
200	$(AR) rc $@ $(GSL_OBJS)
201	$(RANLIB) $@
202
203config.h: configure config.h.in
204	./configure --enable-shared=no --prefix=`pwd`/stage
205	touch $@
206
207config.h.in: ;
208
209DEP_OBJ := $(GSL_OBJS)
210# Don't try to include "*.dep" before config.h is built.
211ifeq ($(MAKECMDGOALS),$(GSL_LIB))
212include $(COMMON)/makefile.deps
213endif
214
215install:
216	$(MKDIR) '$(LIB_INSTALL_DIR)'
217	echo $(CP) $(GSL_LIB) '$(LIB_INSTALL_DIR)/'$$x;
218	$(CP) $(GSL_LIB) '$(LIB_INSTALL_DIR)/'$$x;
219
220clean:
221	-rm -f $(GSL_OBJS) $(GSL_LIB) \
222		$(DEPS) deps \
223	qr-demo.o chol-demo.o svd-demo.o \
224	qr-demo   chol-demo   svd-demo
225
226
227# no default rules
228.SUFFIXES :=
229
230# These are files
231configure: ;
232