5164
|
1 #------------------------------------------------------------------------------- |
|
2 # UMFPACK GNUmakefile for the UMFPACK OCTAVE oct-file (GNU "make" only) |
|
3 #------------------------------------------------------------------------------- |
|
4 |
|
5 .PRECIOUS: %.o |
|
6 |
|
7 # UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. |
|
8 # Davis. All Rights Reserved. See ../README for License. |
|
9 |
|
10 all: umfpack luflop |
|
11 |
|
12 include ../Make/Make.include |
|
13 |
|
14 MKOCT = mkoctfile $(CONFIG) -DNRECIPROCAL -I/usr/include/atlas -I../Include -I../Source -I../../AMD/Include -I../../AMD/Source |
|
15 |
|
16 OCT_SPARSE_INC = -I../../../ |
|
17 |
|
18 |
|
19 #------------------------------------------------------------------------------- |
|
20 # source files |
|
21 #------------------------------------------------------------------------------- |
|
22 |
|
23 # non-user-callable umf_*.[ch] files: |
|
24 UMFCH = umf_assemble umf_blas3_update \ |
|
25 umf_build_tuples umf_create_element \ |
|
26 umf_dump umf_extend_front umf_garbage_collection \ |
|
27 umf_get_memory umf_init_front umf_kernel \ |
|
28 umf_kernel_init umf_kernel_wrapup \ |
|
29 umf_local_search umf_lsolve umf_ltsolve \ |
|
30 umf_mem_alloc_element umf_mem_alloc_head_block \ |
|
31 umf_mem_alloc_tail_block umf_mem_free_tail_block \ |
|
32 umf_mem_init_memoryspace \ |
|
33 umf_report_vector umf_row_search umf_scale_column \ |
|
34 umf_set_stats umf_solve umf_symbolic_usage umf_transpose \ |
|
35 umf_tuple_lengths umf_usolve umf_utsolve umf_valid_numeric \ |
|
36 umf_valid_symbolic umf_grow_front umf_start_front umf_2by2 \ |
|
37 umf_store_lu umf_scale |
|
38 |
|
39 # non-user-callable umf_*.[ch] files, int/long versions only (no real/complex): |
|
40 UMFINT = umf_analyze umf_apply_order umf_colamd umf_free umf_fsize \ |
|
41 umf_is_permutation umf_malloc umf_realloc umf_report_perm \ |
|
42 umf_singletons |
|
43 |
|
44 # non-user-callable and user-callable amd_*.[ch] files (int/long versions only): |
|
45 AMD = amd_aat amd_1 amd_2 amd_dump amd_postorder amd_post_tree amd_defaults \ |
|
46 amd_order amd_control amd_info amd_valid |
|
47 |
|
48 # non-user-callable, created from umf_ltsolve.c, umf_utsolve.c, |
|
49 # umf_triplet.c, and umf_assemble.c , with int/long and real/complex versions: |
|
50 UMF_CREATED = umf_lhsolve umf_uhsolve umf_triplet_map_nox \ |
|
51 umf_triplet_nomap_x umf_triplet_nomap_nox umf_triplet_map_x \ |
|
52 umf_assemble_fixq umf_store_lu_drop |
|
53 |
|
54 # non-user-callable, int/long and real/complex versions: |
|
55 UMF = $(UMF_CREATED) $(UMFCH) |
|
56 |
|
57 # user-callable umfpack_*.[ch] files (int/long and real/complex): |
|
58 UMFPACK = umfpack_col_to_triplet umfpack_defaults umfpack_free_numeric \ |
|
59 umfpack_free_symbolic umfpack_get_numeric umfpack_get_lunz \ |
|
60 umfpack_get_symbolic umfpack_get_determinant umfpack_numeric \ |
|
61 umfpack_qsymbolic umfpack_report_control umfpack_report_info \ |
|
62 umfpack_report_matrix umfpack_report_numeric umfpack_report_perm \ |
|
63 umfpack_report_status umfpack_report_symbolic umfpack_report_triplet \ |
|
64 umfpack_report_vector umfpack_solve umfpack_symbolic \ |
|
65 umfpack_transpose umfpack_triplet_to_col umfpack_scale \ |
|
66 umfpack_load_numeric umfpack_save_numeric \ |
|
67 umfpack_load_symbolic umfpack_save_symbolic |
|
68 |
|
69 # user-callable, created from umfpack_solve.c (umfpack_wsolve.h exists, though): |
|
70 # with int/long and real/complex versions: |
|
71 UMFPACKW = umfpack_wsolve |
|
72 |
|
73 USER = $(UMFPACKW) $(UMFPACK) |
|
74 |
|
75 # user-callable, only one version for int/long, real/complex, *.[ch] files: |
|
76 GENERIC = umfpack_timer umfpack_tictoc |
|
77 |
|
78 #------------------------------------------------------------------------------- |
|
79 # include files: |
|
80 #------------------------------------------------------------------------------- |
|
81 |
|
82 AMDH = ../../AMD/Source/amd_internal.h ../../AMD/Include/amd.h |
|
83 |
|
84 INC1 = umf_config.h umf_version.h umf_internal.h umf_triplet.h |
|
85 |
|
86 INC = ../Include/umfpack.h \ |
|
87 $(addprefix ../Source/, $(INC1)) \ |
|
88 $(addprefix ../Source/, $(addsuffix .h,$(UMFCH))) \ |
|
89 $(addprefix ../Source/, $(addsuffix .h,$(UMFINT))) \ |
|
90 $(addprefix ../Include/, $(addsuffix .h,$(USER))) \ |
|
91 $(addprefix ../Include/, $(addsuffix .h,$(GENERIC))) \ |
|
92 $(AMDH) |
|
93 |
|
94 #------------------------------------------------------------------------------- |
|
95 # Create the umfpack and amd oct-file for OCTAVE (int versions only) |
|
96 #------------------------------------------------------------------------------- |
|
97 |
|
98 OCTI = $(addsuffix .o, $(subst umf_,umf_o_,$(UMFINT))) |
|
99 OCTDI = $(addsuffix .o, $(subst umf_,umf_od_,$(UMF)) $(subst umfpack_,umfpack_od_,$(USER))) |
|
100 OCTZI = $(addsuffix .o, $(subst umf_,umf_oz_,$(UMF)) $(subst umfpack_,umfpack_oz_,$(USER)) ) |
|
101 OCTAMD = $(addsuffix .o, $(subst amd_,amd_o_,$(AMD))) |
|
102 OCTGN = $(addsuffix .o, $(subst umfpack_,umfpack_o_,$(GENERIC))) |
|
103 |
|
104 OCTUMFPACK = $(OCTI) $(OCTDI) $(OCTZI) $(OCTGN) |
|
105 |
|
106 OCTUMFPACK_LIB = umfpack_octave.o |
|
107 |
|
108 # Note that mkoctfile has an "-o" option, but it doesn't work in conjunction |
|
109 # with the "-c" option, thus the need for $(MV) commands. |
|
110 # If it did, then the rules would be much simpler: |
|
111 # $(MKOCT) -DDINT -c $< -o $@ |
|
112 |
|
113 #---------------------------------------- |
|
114 # integer-only routines (no real/complex): |
|
115 #---------------------------------------- |
|
116 |
|
117 amd_o_%.o: ../../AMD/Source/amd_%.c $(AMDH) |
|
118 $(MKOCT) -DDINT -c $< |
|
119 - $(MV) ../../AMD/Source/amd_$*.o $@ |
|
120 |
|
121 |
|
122 umf_o_%.o: ../Source/umf_%.c $(INC) |
|
123 $(MKOCT) -DDINT -c $< |
|
124 - $(MV) ../Source/umf_$*.o $@ |
|
125 |
|
126 #---------------------------------------- |
|
127 # Double precision, int version, for OCTAVE |
|
128 #---------------------------------------- |
|
129 |
|
130 umf_od_%.o: ../Source/umf_%.c $(INC) |
|
131 $(MKOCT) -DDINT -c $< |
|
132 - $(MV) ../Source/umf_$*.o $@ |
|
133 |
|
134 umf_od_%hsolve.o: ../Source/umf_%tsolve.c $(INC) |
|
135 $(MKOCT) -DDINT -DCONJUGATE_SOLVE -c $< |
|
136 - $(MV) ../Source/umf_$*tsolve.o $@ |
|
137 |
|
138 umf_od_triplet_map_x.o: ../Source/umf_triplet.c $(INC) |
|
139 $(MKOCT) -DDINT -DDO_MAP -DDO_VALUES -c $< |
|
140 - $(MV) ../Source/umf_triplet.o $@ |
|
141 |
|
142 umf_od_triplet_map_nox.o: ../Source/umf_triplet.c $(INC) |
|
143 $(MKOCT) -DDINT -DDO_MAP -c $< |
|
144 - $(MV) ../Source/umf_triplet.o $@ |
|
145 |
|
146 umf_od_triplet_nomap_x.o: ../Source/umf_triplet.c $(INC) |
|
147 $(MKOCT) -DDINT -DDO_VALUES -c $< |
|
148 - $(MV) ../Source/umf_triplet.o $@ |
|
149 |
|
150 umf_od_triplet_nomap_nox.o: ../Source/umf_triplet.c $(INC) |
|
151 $(MKOCT) -DDINT -c $< |
|
152 - $(MV) ../Source/umf_triplet.o $@ |
|
153 |
|
154 umf_od_assemble_fixq.o: ../Source/umf_assemble.c $(INC) |
|
155 $(MKOCT) -DDINT -DFIXQ -c $< |
|
156 - $(MV) ../Source/umf_assemble.o $@ |
|
157 |
|
158 umf_od_store_lu_drop.o: ../Source/umf_store_lu.c $(INC) |
|
159 $(MKOCT) -DDINT -DDROP -c $< |
|
160 - $(MV) ../Source/umf_store_lu.o $@ |
|
161 |
|
162 umfpack_od_wsolve.o: ../Source/umfpack_solve.c $(INC) |
|
163 $(MKOCT) -DDINT -DWSOLVE -c $< |
|
164 - $(MV) ../Source/umfpack_solve.o $@ |
|
165 |
|
166 umfpack_od_%.o: ../Source/umfpack_%.c $(INC) |
|
167 $(MKOCT) -DDINT -c $< |
|
168 - $(MV) ../Source/umfpack_$*.o $@ |
|
169 |
|
170 #---------------------------------------- |
|
171 # Complex double precision, int version, for OCTAVE |
|
172 #---------------------------------------- |
|
173 |
|
174 umf_oz_%.o: ../Source/umf_%.c $(INC) |
|
175 $(MKOCT) -DZINT -c $< |
|
176 - $(MV) ../Source/umf_$*.o $@ |
|
177 |
|
178 umf_oz_%hsolve.o: ../Source/umf_%tsolve.c $(INC) |
|
179 $(MKOCT) -DZINT -DCONJUGATE_SOLVE -c $< |
|
180 - $(MV) ../Source/umf_$*tsolve.o $@ |
|
181 |
|
182 umf_oz_triplet_map_x.o: ../Source/umf_triplet.c $(INC) |
|
183 $(MKOCT) -DZINT -DDO_MAP -DDO_VALUES -c $< |
|
184 - $(MV) ../Source/umf_triplet.o $@ |
|
185 |
|
186 umf_oz_triplet_map_nox.o: ../Source/umf_triplet.c $(INC) |
|
187 $(MKOCT) -DZINT -DDO_MAP -c $< |
|
188 - $(MV) ../Source/umf_triplet.o $@ |
|
189 |
|
190 umf_oz_triplet_nomap_x.o: ../Source/umf_triplet.c $(INC) |
|
191 $(MKOCT) -DZINT -DDO_VALUES -c $< |
|
192 - $(MV) ../Source/umf_triplet.o $@ |
|
193 |
|
194 umf_oz_triplet_nomap_nox.o: ../Source/umf_triplet.c $(INC) |
|
195 $(MKOCT) -DZINT -c $< |
|
196 - $(MV) ../Source/umf_triplet.o $@ |
|
197 |
|
198 umf_oz_assemble_fixq.o: ../Source/umf_assemble.c $(INC) |
|
199 $(MKOCT) -DZINT -DFIXQ -c $< |
|
200 - $(MV) ../Source/umf_assemble.o $@ |
|
201 |
|
202 umf_oz_store_lu_drop.o: ../Source/umf_store_lu.c $(INC) |
|
203 $(MKOCT) -DZINT -DDROP -c $< |
|
204 - $(MV) ../Source/umf_store_lu.o $@ |
|
205 |
|
206 umfpack_oz_wsolve.o: ../Source/umfpack_solve.c $(INC) |
|
207 $(MKOCT) -DZINT -DWSOLVE -c $< |
|
208 - $(MV) ../Source/umfpack_solve.o $@ |
|
209 |
|
210 umfpack_oz_%.o: ../Source/umfpack_%.c $(INC) |
|
211 $(MKOCT) -DZINT -c $< |
|
212 - $(MV) ../Source/umfpack_$*.o $@ |
|
213 |
|
214 #---------------------------------------- |
|
215 # Generic routines for OCTAVE |
|
216 #---------------------------------------- |
|
217 |
|
218 umfpack_o_timer.o: ../Source/umfpack_timer.c $(INC) |
|
219 $(MKOCT) -c $< |
|
220 - $(MV) ../Source/umfpack_timer.o $@ |
|
221 |
|
222 umfpack_o_tictoc.o: ../Source/umfpack_tictoc.c $(INC) |
|
223 $(MKOCT) -c $< |
|
224 - $(MV) ../Source/umfpack_tictoc.o $@ |
|
225 |
|
226 #---------------------------------------- |
|
227 # umfpack oct-files |
|
228 #---------------------------------------- |
|
229 |
|
230 umfpack: umfpack.cc $(OCTUMFPACK) $(OCTAMD) |
|
231 $(MKOCT) $(OCT_SPARSE_INC) umfpack.cc $(OCTUMFPACK) $(OCTAMD) -o umfpack.oct |
|
232 |
|
233 luflop: luflop.cc |
|
234 $(MKOCT) $(OCT_SPARSE_INC) luflop.cc -o luflop.oct |
|
235 |
|
236 #---------------------------------------- |
|
237 # umfpack library to link with octave |
|
238 #---------------------------------------- |
|
239 |
|
240 octave: $(OCTUMFPACK) $(OCTAMD) |
|
241 ld -r $(OCTUMFPACK) $(OCTAMD) -o ../../../$(OCTUMFPACK_LIB) |
|
242 |
|
243 #------------------------------------------------------------------------------- |
|
244 # Remove all but the files in the original distribution |
|
245 #------------------------------------------------------------------------------- |
|
246 |
|
247 purge: clean |
|
248 - $(RM) *.oct *.so |