1#===============================================================================
2# SuiteSparseQR/Lib/Makefile
3#===============================================================================
4
5LIBRARY = libspqr
6VERSION = 2.0.9
7SO_VERSION = 2
8
9default: library
10
11ccode: all
12
13include ../../SuiteSparse_config/SuiteSparse_config.mk
14
15# SPQR depends on CHOLMOD, AMD, COLAMD, LAPACK, the BLAS and SuiteSparse_config
16LDLIBS += -lamd -lcolamd -lcholmod -lsuitesparseconfig $(LAPACK) $(BLAS) $(TBB)
17
18# compile and install in SuiteSparse/lib
19library:
20	$(MAKE) install INSTALL=$(SUITESPARSE)
21
22#-------------------------------------------------------------------------------
23
24all: library
25
26purge: distclean
27
28distclean: clean
29	- $(RM) -r $(PURGE)
30
31clean:
32	- $(RM) -r $(CLEAN)
33
34INC = ../Include/spqr.hpp ../Include/SuiteSparseQR_C.h \
35	../Include/SuiteSparseQR_definitions.h \
36	../Include/SuiteSparseQR.hpp
37
38OBJ = \
39    spqr_rmap.o \
40    SuiteSparseQR_C.o \
41    SuiteSparseQR_expert.o \
42    spqr_parallel.o \
43    spqr_kernel.o \
44    spqr_analyze.o \
45    spqr_assemble.o \
46    spqr_cpack.o \
47    spqr_csize.o \
48    spqr_fcsize.o \
49    spqr_debug.o \
50    spqr_front.o \
51    spqr_factorize.o \
52    spqr_freenum.o \
53    spqr_freesym.o \
54    spqr_freefac.o \
55    spqr_fsize.o \
56    spqr_maxcolnorm.o \
57    spqr_rconvert.o \
58    spqr_rcount.o \
59    spqr_rhpack.o \
60    spqr_rsolve.o \
61    spqr_stranspose1.o \
62    spqr_stranspose2.o \
63    spqr_hpinv.o \
64    spqr_1fixed.o \
65    spqr_1colamd.o \
66    SuiteSparseQR.o \
67    spqr_1factor.o \
68    spqr_cumsum.o \
69    spqr_shift.o \
70    spqr_happly.o \
71    spqr_panel.o \
72    spqr_happly_work.o \
73    SuiteSparseQR_qmult.o \
74    spqr_trapezoidal.o \
75    spqr_larftb.o \
76    spqr_append.o \
77    spqr_type.o \
78    spqr_tol.o
79
80ifneq ($(GPU_CONFIG),)
81OBJ += \
82    spqrgpu_kernel.o \
83    spqrgpu_buildAssemblyMaps.o \
84    spqrgpu_computeFrontStaging.o
85endif
86
87$(OBJ): $(INC)
88
89I = -I../../CHOLMOD/Include -I../../SuiteSparse_config -I../Include
90
91ifneq ($(GPU_CONFIG),)
92    I += -I../../SuiteSparse_GPURuntime/Include \
93         -I../../GPUQREngine/Include $(CUDA_INC)
94endif
95
96C = $(CXX) $(CF) $(SPQR_CONFIG) $(CHOLMOD_CONFIG) $(CONFIG_PARTITION) $(I)
97
98ifneq ($(GPU_CONFIG),)
99    LDLIBS += $(CUDART_LIB) $(CUBLAS_LIB) \
100        -lSuiteSparse_GPURuntime -lGPUQREngine
101endif
102
103#-------------------------------------------------------------------------------
104
105static: $(AR_TARGET)
106
107$(AR_TARGET): $(OBJ)
108	$(ARCHIVE) $@ $^
109	- $(RANLIB) $@
110
111#-------------------------------------------------------------------------------
112
113spqr_1colamd.o: ../Source/spqr_1colamd.cpp
114	$(C) -c $<
115
116spqr_1factor.o: ../Source/spqr_1factor.cpp
117	$(C) -c $<
118
119spqr_1fixed.o: ../Source/spqr_1fixed.cpp
120	$(C) -c $<
121
122spqr_analyze.o: ../Source/spqr_analyze.cpp
123	$(C) -c $<
124
125spqr_parallel.o: ../Source/spqr_parallel.cpp
126	$(C) -c $<
127
128spqr_kernel.o: ../Source/spqr_kernel.cpp
129	$(C) -c $<
130
131spqr_append.o: ../Source/spqr_append.cpp
132	$(C) -c $<
133
134spqr_assemble.o: ../Source/spqr_assemble.cpp
135	$(C) -c $<
136
137spqr_cpack.o: ../Source/spqr_cpack.cpp
138	$(C) -c $<
139
140spqr_csize.o: ../Source/spqr_csize.cpp
141	$(C) -c $<
142
143spqr_cumsum.o: ../Source/spqr_cumsum.cpp
144	$(C) -c $<
145
146spqr_debug.o: ../Source/spqr_debug.cpp
147	$(C) -c $<
148
149spqr_factorize.o: ../Source/spqr_factorize.cpp
150	$(C) -c $<
151
152spqr_fcsize.o: ../Source/spqr_fcsize.cpp
153	$(C) -c $<
154
155spqr_freefac.o: ../Source/spqr_freefac.cpp
156	$(C) -c $<
157
158spqr_freenum.o: ../Source/spqr_freenum.cpp
159	$(C) -c $<
160
161spqr_freesym.o: ../Source/spqr_freesym.cpp
162	$(C) -c $<
163
164spqr_fsize.o: ../Source/spqr_fsize.cpp
165	$(C) -c $<
166
167spqr_happly.o: ../Source/spqr_happly.cpp
168	$(C) -c $<
169
170spqr_panel.o: ../Source/spqr_panel.cpp
171	$(C) -c $<
172
173spqr_happly_work.o: ../Source/spqr_happly_work.cpp
174	$(C) -c $<
175
176spqr_hpinv.o: ../Source/spqr_hpinv.cpp
177	$(C) -c $<
178
179spqr_larftb.o: ../Source/spqr_larftb.cpp
180	$(C) -c $<
181
182spqr_rconvert.o: ../Source/spqr_rconvert.cpp
183	$(C) -c $<
184
185spqr_rcount.o: ../Source/spqr_rcount.cpp
186	$(C) -c $<
187
188spqr_rhpack.o: ../Source/spqr_rhpack.cpp
189	$(C) -c $<
190
191spqr_rsolve.o: ../Source/spqr_rsolve.cpp
192	$(C) -c $<
193
194spqr_shift.o: ../Source/spqr_shift.cpp
195	$(C) -c $<
196
197spqr_stranspose1.o: ../Source/spqr_stranspose1.cpp
198	$(C) -c $<
199
200spqr_stranspose2.o: ../Source/spqr_stranspose2.cpp
201	$(C) -c $<
202
203spqr_trapezoidal.o: ../Source/spqr_trapezoidal.cpp
204	$(C) -c $<
205
206spqr_type.o: ../Source/spqr_type.cpp
207	$(C) -c $<
208
209spqr_front.o: ../Source/spqr_front.cpp
210	$(C) -c $<
211
212SuiteSparseQR_expert.o: ../Source/SuiteSparseQR_expert.cpp
213	$(C) -c $<
214
215spqr_maxcolnorm.o: ../Source/spqr_maxcolnorm.cpp
216	$(C) -c $<
217
218SuiteSparseQR_qmult.o: ../Source/SuiteSparseQR_qmult.cpp
219	$(C) -c $<
220
221SuiteSparseQR.o: ../Source/SuiteSparseQR.cpp
222	$(C) -c $<
223
224spqr_tol.o: ../Source/spqr_tol.cpp
225	$(C) -c $<
226
227SuiteSparseQR_C.o: ../Source/SuiteSparseQR_C.cpp
228	$(C) -c $<
229
230spqr_rmap.o: ../Source/spqr_rmap.cpp
231	$(C) -c $<
232
233spqrgpu_kernel.o: ../SPQRGPU/spqrgpu_kernel.cpp
234	$(C) -c $<
235
236spqrgpu_buildAssemblyMaps.o: ../SPQRGPU/spqrgpu_buildAssemblyMaps.cpp
237	$(C) -c $<
238
239spqrgpu_computeFrontStaging.o: ../SPQRGPU/spqrgpu_computeFrontStaging.cpp
240	$(C) -c $<
241
242#-------------------------------------------------------------------------------
243
244# install SPQR
245install: $(AR_TARGET) $(INSTALL_LIB)/$(SO_TARGET)
246
247$(INSTALL_LIB)/$(SO_TARGET): $(OBJ)
248	@mkdir -p $(INSTALL_LIB)
249	@mkdir -p $(INSTALL_INCLUDE)
250	@mkdir -p $(INSTALL_DOC)
251	$(CXX) $(SO_OPTS) $^ -o $@ $(LDLIBS)
252	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_PLAIN) )
253	( cd $(INSTALL_LIB) ; ln -sf $(SO_TARGET) $(SO_MAIN) )
254	$(CP) ../Include/SuiteSparseQR.hpp $(INSTALL_INCLUDE)
255	$(CP) ../Include/SuiteSparseQR_C.h $(INSTALL_INCLUDE)
256	$(CP) ../Include/SuiteSparseQR_definitions.h $(INSTALL_INCLUDE)
257	$(CP) ../Include/spqr.hpp $(INSTALL_INCLUDE)
258	$(CP) ../Doc/spqr_user_guide.pdf $(INSTALL_DOC)
259	$(CP) ../README.txt $(INSTALL_DOC)/SPQR_README.txt
260	chmod 755 $(INSTALL_LIB)/$(SO_TARGET)
261	chmod 644 $(INSTALL_INCLUDE)/SuiteSparseQR.hpp
262	chmod 644 $(INSTALL_INCLUDE)/SuiteSparseQR_C.h
263	chmod 644 $(INSTALL_INCLUDE)/SuiteSparseQR_definitions.h
264	chmod 644 $(INSTALL_INCLUDE)/spqr.hpp
265	chmod 644 $(INSTALL_DOC)/spqr_user_guide.pdf
266	chmod 644 $(INSTALL_DOC)/SPQR_README.txt
267
268# uninstall SPQR
269uninstall:
270	$(RM) $(INSTALL_LIB)/$(SO_TARGET)
271	$(RM) $(INSTALL_LIB)/$(SO_PLAIN)
272	$(RM) $(INSTALL_LIB)/$(SO_MAIN)
273	$(RM) $(INSTALL_INCLUDE)/SuiteSparseQR.hpp
274	$(RM) $(INSTALL_INCLUDE)/SuiteSparseQR_C.h
275	$(RM) $(INSTALL_INCLUDE)/SuiteSparseQR_definitions.h
276	$(RM) $(INSTALL_INCLUDE)/spqr.hpp
277	$(RM) $(INSTALL_DOC)/spqr_user_guide.pdf
278	$(RM) $(INSTALL_DOC)/SPQR_README.txt
279
280