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