comparison liboctave/UMFPACK/UMFPACK/OCTAVE/GNUmakefile @ 5164:57077d0ddc8e

[project @ 2005-02-25 19:55:24 by jwe]
author jwe
date Fri, 25 Feb 2005 19:55:28 +0000
parents
children
comparison
equal deleted inserted replaced
5163:9f3299378193 5164:57077d0ddc8e
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